最近一个项目使用Gson 工具处理json,之前用的阿里的fastjson,刚开始很不习惯,记录一下学习。
使用的包:
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
1、Gson,JsonParser。对于没有数据头的json串数组,可以使用JsonParser转换成JsonArray,然后就可以拿到单个的jsonObject 去获取数据;但如果value值是json嵌套,要把value转换成map就要使用Gson,直接用JsonObject的get方法进行类型强转是不行的
Gson gson= new Gson();
JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = jsonParser .parse(result).getAsJsonArray();
JsonObject jsonObject = jsonArray.get(0).getAsJsonObject();
String abc = jsonObject.get("abc").getAsString();
Map<String, String> map= gson.fromJson(jsonObject.get("map"),Map.class);
2、使用JsonObject创建的json嵌套是不可行的,被嵌套的json会被当做一个完整的value值。可以使用Map方式嵌套,然后使用Gson类创建json串,或者使用VO类也是可以的
//错误的方式
JsonObject json1 = new JsonObject();
json1.addProperty("key1","123");
JsonObject json11 = new JsonObject();
json11.addProperty("key11","456");
json1.addProperty("sub", json11.toString());
//正确的方式
Map<String, Object> map1 = new HashMap<>(4);
map1.put("key1","123");
Map<String, Object> map11 = new HashMap<>(1);
map11.put("key11","456");
map1.put("sub",map11);
Gson gson = new Gson();
String jsonResult = gson.toJson(map1);
参考博客
https://blog.csdn.net/qq_36838191/article/details/80596316
https://www.cnblogs.com/jianyungsun/p/6647203.html
https://blog.csdn.net/zheng548/article/details/52743071