转换为Json数据的几种方式

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

但是这个包得依赖很多其他包,比较臃肿 里面有两个方式

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

1.简单的对象和集合 结果如下:

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

2.对象中某个属性是对象以及对象集合 最终结果:也是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

结果如下:转换的对象会携带class信息

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

2.2 将一个复杂对象转成JSON

等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<String, Object> map = new HashMap<String,Object>();
//基本类型
map.put("total", 20);

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

//集合
ArrayList<Product> list = new ArrayList<Product>();
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);

经验分享 程序员 微信小程序 职场和发展