转换为Json数据的几种方式

1.导入json-lib-2.4-jdk15.jar

但是这个包得依赖很多其他包,比较臃肿
转换为Json数据的几种方式_第1张图片
里面有两个方式

  • 将对象转成JSON
    String json = JSONObject.fromObject(products).toString();
  • 将集合转成JSON
    String json = JSONArray.fromObject(products).toString();
测试:

1.简单的对象和集合
在这里插入图片描述
转换为Json数据的几种方式_第2张图片
结果如下:

{"pid":"1","pinyin":"手机","pname":"shouji"}
[{"pid":"1","pinyin":"手机","pname":"shouji"},{"pid":"2","pinyin":"电脑","pname":"diannao"}]

2.对象中某个属性是对象以及对象集合
转换为Json数据的几种方式_第3张图片
最终结果:也是ok的

{"desc":{"desc":"非常好"},"pid":"1","pinyin":"手机","pname":"shouji"}
[{"desc":{"desc":"非常好"},"pid":"1","pinyin":"手机","pname":"shouji"},{"desc":{"desc":"非常好"},"pid":"2","pinyin":"电脑","pname":"diannao"}]

即使换成Desc的集合,最终呈现也是ok的

3.将map集合转成JSON
也是ok的

2.使用flexJson,将集合转成Json对象

只需要导一个包:flexjson-2.1.jar
方法只有一个

  • String serialize = jsonSerializer.serialize(list);
2.1 将一个简单对象或集合转成JSON

转换为Json数据的几种方式_第4张图片
结果如下:转换的对象会携带class信息

{"class":"cn.itcast.servlet.Product","pid":"1","pinyin":"手机","pname":"shouji"}

2.2 将一个复杂对象转成JSON

转换为Json数据的几种方式_第5张图片
等desc为null时,会显示为null,不为null时,也会显示desc的class对象

{"class":"cn.itcast.servlet.Product","desc":{"class":"cn.itcast.servlet.Desc","desc":"和那帮"},"pid":"1","pinyin":"手机","pname":"shouji"}

2.3 将map对象转成JSON

如果map中分别存入三类数据

HashMap map = new HashMap();
//基本类型
map.put("total", 20);

//引用类型
Product pro = new Product("1", "shouji", "手机");
map.put("pro",pro);

//集合
ArrayList list = new ArrayList();
Product p1 = new Product("1", "shouji", "手机");
Product p2 = new Product("2", "diannao", "电脑");
list.add(p1);
list.add(p2);
map.put("rows",list);

JSONSerializer jsonSerializer = new JSONSerializer();
String json = jsonSerializer.serialize(map);
System.out.println(json);

最终显示:基本类型和对象都可以显示,但是集合无法显示

{"total":20,"pro":{"class":"cn.itcast.servlet.Product","desc":null,"pid":"1","pinyin":"手机","pname":"shouji"}}

我们需要这么做才行,添加一个include方法
String json = jsonSerializer.include(“rows”).serialize(map);

你可能感兴趣的:(转换为Json数据的几种方式)