JSON工具及常使用的转换
一、四大JSON工具
工具名称 | 使用 | 场景 | |
---|---|---|---|
Gson | 需要先建好对象的类型及成员才能转换 | 数据量少,javabean->json | |
*FastJson | 复杂的Bean转换Json会有问题 | 数据量少,字符串-》json | |
Jackson | 转换的json不是标准json | 数据量大,不能对对象集合解析,只能转成一个Map,字符串-》json,javabean->json | |
Json-lib | 不能满足互联网需求 |
FastJson进行JSON字符串解析,Jackson将集合转成JSON格式字符串。
二、常用转换
(1)FastJson
a.对象转JSON【toJSONString()】
String objJson = JSON.toJSONString(Object object);
b.Map转JSON【toJSONString()】
Map<String, Object> map = new HashMap<String, Object>(); map.put("key1", "One"); map.put("key2", "Two"); String mapJson = JSON.toJSONString(map);
c.List<Map>转JSON【toJSONString()】
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);
b.自定义JAVAbean(实体类)转JSON【toJSONString()】
User user = new User(); user.setUserName("李四"); user.setAge(24); String userJson = JSON.toJSONString(user);
json的子类反序列化,转回实体
JSONObject,JSONArray是JSON的两个子类。 JSONObject相当于 `Map<String, Object>`, JSONArray相当于 `List<Object>`。
c.JSONArray转list【toArray()】
List<Object> lists = jsonArray.subList(0, jsonArray.size()); Integer[] ints = lists.toArray(new Integer[lists.size()]);
d.JSONObject转JSONArray
// string转JSONObject 【JSONObject.parseObject()】 JSONObject jsonData = JSONObject.parseObject(jsonContent); JSONArray jsonArray = new JSONArray(); jsonData.forEach((key,value) -> { jsonArray.add(value); });
e.判断是否json
字符串: `JSONObject.parseObject(jsonContent);` 数组: `JSONObject.parseArray(jsonContent);`