转换之前需要知道什么是json

  json类似于map集合:键值对的方式存在,是一种轻量级数据交互格式。

  eg:

    {name:" ",age:15}

    [{name:" ",age:15},{name:" ",age:15}]

使用工具生成json

  JsonLib来转换对象

      JsonArray 将数组或集合转化为json

      JSONObject 将对象装换为json格式

    依赖的java包

   编写一个javabean

    

package com.baidu;

public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
} }

    测试类:

package com.baidu;

import java.util.ArrayList;
import net.sf.json.JSONArray; public class Demo {
public static void main(String[] args) {
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
JSONArray fromObject = JSONArray.fromObject(array);
System.out.println(fromObject.toString());
}
}

  输出结果:

[{"id":11,"name":"风清扬"},{"id":12,"name":"小师妹"}]

  测试类:(过滤id)

package com.baidu;

import java.util.ArrayList;
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig; public class Demo {
public static void main(String[] args) {
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
JsonConfig js=new JsonConfig();
js.setExcludes(new String[]{"id"});
JSONArray fromObject = JSONArray.fromObject(array,js);
System.out.println(fromObject.toString());
}
}

  输出结果:

[{"name":"风清扬"},{"name":"小师妹"}]

  使用阿里巴巴的jar包  fastjson.jar

  测试类

package com.baidu;

import java.util.ArrayList;

import com.alibaba.fastjson.JSON;

public class Demo {
public static void main(String[] args) {
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
String arr = JSON.toJSONString(array);
System.out.println(arr);
}
}

  输出结果:

[{"id":11,"name":"风清扬"},{"id":12,"name":"小师妹"}]

  使用过滤器(过滤id)

package com.baidu;

import java.util.ArrayList;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; public class Demo {
public static void main(String[] args) {
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
//需要什麼写什么
SimplePropertyPreFilter sdfs=new SimplePropertyPreFilter(User.class,"name");
String arr = JSON.toJSONString(array,sdfs);
System.out.println(arr);
}
}

  输出结果:

[{"name":"风清扬"},{"name":"小师妹"}]

  细致过滤某个值

@Test
public void JsonTest1(){
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
SerializeFilter sf=new PropertyFilter() {//具体的过滤器
@Override
public boolean apply(Object object, String name, Object value) {
/*if("小师妹".equals(value)){
return false;
}*/
System.out.println(object);//表示json对象
System.out.println(name);//表示字段
System.out.println(value);//表示字段的值
return true;
}
};
String arr = JSON.toJSONString(array,sf);
//System.out.println(arr);
}

  使用Jockson

  

      @Test
  public void JsonTest1() throws JsonGenerationException, JsonMappingException, IOException{
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
ObjectMapper om=new ObjectMapper();
String strjson = om.writeValueAsString(array);
System.out.println(strjson);
}

  输出结果:

[{"id":11,"name":"风清扬"},{"id":12,"name":"小师妹"}]

  对某个字段进行格式化

@Test
public void JsonTest1() throws JsonGenerationException, JsonMappingException, IOException{
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
ObjectMapper om=new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));//设置日期格式化器
String strjson = om.writeValueAsString(array);
System.out.println(strjson);
}

  使用过滤器进行对字段进行过滤

    

    @Test
public void JsonTest1() throws JsonGenerationException, JsonMappingException, IOException{
User u=new User();
u.setId(11);
u.setName("风清扬");
User u1=new User();
u1.setId(12);
u1.setName("小师妹");
ArrayList<User> array=new ArrayList<User>();
array.add(u);
array.add(u1);
ObjectMapper om=new ObjectMapper();
//处理过滤属性
//只显示这个属性
//[{"id":11},{"id":12}]
FilterProvider f=new SimpleFilterProvider().addFilter("UserFilter",SimpleBeanPropertyFilter.filterOutAllExcept("id"));
//[{"name":"风清扬"},{"name":"小师妹"}] 不包含这个属性
//FilterProvider f=new SimpleFilterProvider().addFilter("UserFilter",SimpleBeanPropertyFilter.serializeAllExcept("id")); om.setFilters(f);
String strjson = om.writeValueAsString(array);
System.out.println(strjson);
}

  

day30(对象转json(java))的更多相关文章

  1. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

  2. java对象与json串互转

    1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSO ...

  3. 【JSON 注解】JSON循环引用2----JSON注解@JsonIgnoreProperties+JAVA关键字transient+后台对象与JSON数据的格式互相转化

    接着来说这个JSON循环引用的问题: 关于JSON格式的转化,其实关键就是这几个依赖: <!-- json --> <!-- 1号 --> <dependency> ...

  4. Jackson转换对象为json的时候报java.lang.stackoverflowerror

    无论在将一个对象转为json字符串的时候采用何种算法,如果你的对象的属性的类型不是基本类型或对应的引用类型,转换应该都不会就此结束,那么有一种方式可以导致这种转换陷入无限循环:将某个对象的属性设为对象 ...

  5. java对象与json对象间的相互转换

    工程中所需的jar包,因为在网上不太好找,所以我将它放到我的网盘里了,如有需要随便下载. 点击下载 1.简单的解析json字符串 首先将json字符串转换为json对象,然后再解析json对象,过程如 ...

  6. JSON-lib框架,JAVA对象与JSON、XML之间的相互转换

    Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作 ...

  7. 使用jackson对Java对象与JSON字符串相互转换的一些总结

    本文为菠萝大象原创,如要转载请注明出处.http://www.blogjava.net/bolo 代码无真相,为了最简单的说明,我直接上代码. public class User { private  ...

  8. net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案

    我使用的net.sf.json是json-lib-2.4-jdk15.jar,把json对象转换为普通java实体对象时候有个问题,josn对象转换为java对象之后,json串里面的那几个小数点的值 ...

  9. java对象转json应clone,避免生成json串有问题

    今天因为一个java对象转json,搞了我一下午,在些记录一下: 是这样:我在strtuts2的action中调用services返回 Row: 26, 中国银行海鹰, 29, 东楼, 36, 1F ...

随机推荐

  1. IIS站点报拒绝访问Temporary ASP.NET Files的解决办法

    IIS站点本来运行的好好的,突然就出现了:Temporary ASP.NET Files拒绝访问的问题.遇到此类问题,请逐步排查,定可解决. 原因:Windows操作系统升级导致. 办法: 1.检查C ...

  2. SVN查看最新几次提交日志的命令

    Windows下,使用svn客户端查看日志很方便,linux下查看的记录条数的小技巧: 1>查看某个目录下的所有日志记录 svn log [PATH] 上面的方式,对于命令行下查看时是很不方便的 ...

  3. Servlet封装类

    Servlet 提供了四个封装类: public class ServletRequestWrapper extends java.lang.Object implements ServletRequ ...

  4. java通过接口扩展枚举

    package com.hra.riskprice; import com.hra.riskprice.SysEnum.Factor_Type; import com.hra.riskprice.po ...

  5. Visual code 搭建Vue项目

    使用VS Code搭建Vue项目 1.安装 VScode 2..安装最新node.JS 2.安装cnpm镜像  淘宝镜像(node自带安装了npm,故不再安装) npm install -g cnpm ...

  6. maven下载的jar相应pom文件下载不完整问题。

    今天遇到一个奇葩问题: 同样的项目,我启动报错 : 某个class文件找不到.. 查找maven 依赖也的确没有找到 对应的jar 包. 查找同事项目,可以看到该class对应的 jar 包 是 lo ...

  7. Java学习笔记:多线程(一)

    Java中线程的五种状态: 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked) 凋亡状态(Dead) 其中阻塞状态(Blocked)又分为三种: ...

  8. js之function

    function* function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个  Generator  对象. 你 ...

  9. 强连通缩点— HDU1827

    强连通缩点以后最终形成的是一棵树 我们可以根据树的性质来看缩点以后的强连通分量图,就很好理解了 /* gyt Live up to every day */ #include<cstdio> ...

  10. Java课堂测试01及感想

    上周进行了Java的开学第一次测验,按要求做一个模拟ATM机功能的程序,实现存取款.转账汇款.修改密码.查询余额的操作.这次测验和假期的试题最大的不同还是把数组存储改成的文件存储,在听到老师说要用文件 ...