JSON是一个抽象类
JSONObject是一个继承自JSON的类
JSON,JSONObject 和 JsonObject
- JAR 包不同,对于可以调用的内置方法函数也不同
JSONObject属于 org.json.JSONObject包,
JsonObject 属于 com.google.gson.JsonObject包
2. 存储方式不同
JSONObject用HashMap保存键值对,
JsonObject用 LInkedTreeMap 保存键值对。
对空值处理方式不同
如果要添加一个null值,两者在存储和获取上有区别。 JSONObject: 添加 value 为null,这个键值对会被删掉 JsonObject: 添加 value 为null, 可以正常添加 这会导致获取数据的时候也有区别。 JSONObject会获取不到这个键值对,但是 JsonObject则会获取到 null的数据。
toString结果不同
因为JSONObject是用HashMap来保存数据的,所以对它toString的时候可能出现顺序和保存顺序不一致的情况。 这一般没什么问题,但是如果要把内容作为数据校验的话可能不行,比如用md5计算,可能会出现每次的校验值都不同。
Json, String, List, Map, JavaBean之间转换
1.将 List 对象转换为 Json 格式的String
List users= findAllUser();
String str = JSONObject.toJSONString(users);
2.将 Map 对象转换为 JsonObject
Map<String,Object> map = new HashMap();
map.put(“name”,“zhangsan”);
map.put(“age”,“15”);
JSONObject jsonObject = new JSONObject(map);
3.将Map 转换为 Json 格式的String 字符串
String jsonStr = JSON.toJSONString(map);
4.将 json 格式的String 字符串转换为 Map
String jsonStr = “{“name”:“zhangsan”,“age”:“15”}”;
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
Map<String,Object> map = jsonObject;
5. 将 json 格式的字符串转换为 JsonObject
String jsonStr = “{“name”:“zhangsan”,“age”:“15”}”;
JSONObject jsonObject = JSON.parseObject(jsonStr);
6. 将 json字符串转换为 Java对象
String jsonStr = “{“name”:“zhangsan”,“email”:“15”}”;
User user = JSON.parseObject(jsonStr,User.class);
7. 将 json 字符串转换为 JSONArray 数组
String jsonStr = “[{“name”:“zhangsan”,“email”:“zhangsan@qq.com”},{“name”:“lisi”,“email”:“lisi@163.com”}]”;
JSONArray array = JSON.parseArray(jsonStr);
for(int i=0;i<array.size();i++){
System.out.println(array.get(i));
}
- 将Java 对象转换为 json 字符串
User user = new User(11,“wangwu”,“wangwu@163.com”,“上海”);
String str = JSON.toJSONString(user);
9. 将json 字符串转换为 Java 实体集合
String jsonStr = “[{“name”:“zhangsan”,“email”:“zhangsan@qq.com”},{“name”:“lisi”,“email”:“lisi@163.com”}]”;
List list = JSON.parseArray(jsonStr,User.class);
10. 将 java 对象转换为 JsonObject
User user = new User(11,“wangwu”,“wangwu@163.com”,“上海”);
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);在这里插入代码片