如果使用Maven,在pom.xml文件加入以下依赖。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.23</version> </dependency>
序列化就是指 把JavaBean对象转成JSON格式的字符串。
com.alibaba.fastjson.JSON提供了许多方法(多态)实现序列化。
5.1.1.基本的序列化
String objJson = JSON.toJSONString(Object object);
例1:将Map转成JSON
Map<String, Object> map = new HashMap<String, Object>(); map.put("key1", "One"); map.put("key2", "Two"); String mapJson = JSON.toJSONString(map);
输出结果:
{"key1":"One","key2":"Two"}
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("key1", "One"); map1.put("key2", "Two"); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("key1", "Three"); map2.put("key2", "Four"); list.add(map1); list.add(map2); String listJson = JSON.toJSONString(list);
输出结果:
[{"key1":"One","key2":"Two"},{"key3":"Three","key4":"Four"}]
可以输出格式化后的 JSON 字符串。
String objJson = JSON.toJSONString(Object object, boolean prettyFormat);
传入一个对象和一个布尔类型(是否格式化),将对象转成格式化后的JSON字符串。
例3:以例2代码为例。
String listJson = JSON.toJSONString(list, true);
输出结果为:
[ { "key1":"One", "key2":"Two" }, { "key3":"Three", "key4":"Four" } ]
String objJson = JSON.toJSONString(Object object, SerializerFeature... features)
5.2 反序列化
反序列化就是把JSON格式的字符串转化为Java Bean对象。
简单举几个例子。
指定Class信息反序列化。
User user1 = JSON.parseObject(userJson, User.class);
集合反序列化。
List<Map> list1 = JSON.parseArray(listJson, Map.class);
泛型的反序列化(使用TypeReference传入类型信息)。
Map<String, Object> map1 = JSON.parseObject(mapJson, new TypeReference<Map<String, Object>>(){});
JSONObject,JSONArray是JSON的两个子类。
JSONObject相当于Map<String, Object>,
JSONArray相当于List<Object>。
简单方法示例:
例16:将Map转成JSONObject,然后添加元素,输出。
Map<String, Object> map = new HashMap<String, Object>(); map.put("key1", "One"); map.put("key2", "Two"); JSONObject j = new JSONObject(map); j.put("key3", "Three"); System.out.println(j.get("key1")); System.out.println(j.get("key2")); System.out.println(j.get("key3"));
输出结果:
One Two Three
例17:将List对象转成JSONArray,然后输出。
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("key1", "One"); map.put("key2", "Two"); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("key1", "Three"); map2.put("key2", "Four"); list.add(map); list.add(map2); JSONArray j = JSONArray.parseArray(JSON.toJSONString(list)); for(int i=0; i<j.size(); i++){ System.out.println(j.get(i)); }
输出结果:
{"key1":"One","key2":"Two"}
{"key1":"Three","key2":"Four"}