Gson的使用

梦里梦外; 2023-02-17 02:20 68阅读 0赞

为什么转用Gson了,FastJSON bug实在是太多了!

依赖

  1. <dependency>
  2. <groupId>com.google.code.gson</groupId>
  3. <artifactId>gson</artifactId>
  4. <version>2.8.3</version>
  5. </dependency>

pojo

  1. class JsonBean{
  2. int code;
  3. String msg;
  4. Object extend;
  5. public int getCode() {
  6. return code;
  7. }
  8. public void setCode(int code) {
  9. this.code = code;
  10. }
  11. public String getMsg() {
  12. return msg;
  13. }
  14. public void setMsg(String msg) {
  15. this.msg = msg;
  16. }
  17. public Object getExtend() {
  18. return extend;
  19. }
  20. public void setExtend(Object extend) {
  21. this.extend = extend;
  22. }
  23. }

谷歌Gson解析json

  1. String json = "{\"code\":100,\"msg\":\"处理成功!\",\"extend\":{\"jsonString\":{\"userId\":1,\"userName\":\"123\",\"userPwd\":\"123\"}}}";
  2. JsonObject jsonObject = (JsonObject) new JsonParser().parse(json).getAsJsonObject();
  3. System.out.println(jsonObject.get("msg").getAsString());//获取msg key的值
  4. System.out.println(jsonObject.get("code").getAsInt());//获取code key的值 输出格式为int
  5. JsonObject extend = jsonObject.getAsJsonObject("extend");//获取extend 节点JSonObject 对象
  6. System.out.println(extend.get("jsonString"));//获取jsonString 值
  7. System.out.println(extend.get("jsonString").getAsJsonObject());//获取jsonString 作为JSonObject 对象
  8. System.out.println(extend.get("jsonString").getAsJsonObject().get("userId"));//获取userId值

json转java对象

  1. //json转java对象
  2. Gson gson = new Gson();
  3. JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
  4. System.out.println("json转java对象 " + jsonBean);
  5. //java转json
  6. System.out.println("java转json " + gson.toJson(jsonBean));

结果输出

在这里插入图片描述

API

红色是转json对象
绿色是转java对象
其他的api暂时没涉及到。
在这里插入图片描述

序列化

序列化别名

  1. @SerializedName("w");
  2. String age;

当序列化的时候,会把Java bean中的字段age存储成w,在反序列化的时候会把Json的w这个key反序列化到Java bean的width字段上。

声明该字段不参与反序列化

@Expose(deserialize = false)

声明该字段序列化和反序列化都不参与
@Expose(serialize = false, deserialize = false)

要使该注解生效,必须对Gson进行配置

  1. GsonBuilder builder = new GsonBuilder();
  2. builder.excludeFieldsWithoutExposeAnnotation();
  3. Gson gson = builder.create();

注意
只要有一个字段使用了Expose注解,所有需要参与序列化和反序列化的字段都要有这个注解 因为这个注解要么不生效,如果生效的话,就只会对有Expose注解的字段进行处理

发表评论

表情:
评论列表 (有 0 条评论,68人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Gson使用介绍

    哇,原来我已经潜水2年多了,还是需要养成习惯写写东西啊。 最近在做一个java web service项目,需要用到jason,本人对java不是特别精通,于是开始搜索一些j

    相关 Gson使用

    (1)@SerializedName 的使用 场景:后台返回的字段 与 前端所需的字段不一致,如前端菜单控件接收的数据需要特定的字段名称 public class

    相关 Gson简单使用

    Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。