转换为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);
