美文网首页
Gson的使用

Gson的使用

作者: 喊我小王吧 | 来源:发表于2020-07-08 23:04 被阅读0次

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

    依赖

    <dependency>
            <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.3</version>
    </dependency>
    

    pojo

    class JsonBean{
            int code;
            String msg;
    
            Object extend;
    
            public int getCode() {
                return code;
            }
    
            public void setCode(int code) {
                this.code = code;
            }
    
            public String getMsg() {
                return msg;
            }
    
            public void setMsg(String msg) {
                this.msg = msg;
            }
    
            public Object getExtend() {
                return extend;
            }
    
            public void setExtend(Object extend) {
                this.extend = extend;
            }
        }
    

    谷歌Gson解析json

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

    json转java对象

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

    结果输出

    在这里插入图片描述

    API

    红色是转json对象
    绿色是转java对象
    其他的api暂时没涉及到。


    在这里插入图片描述

    序列化

    序列化别名

    @SerializedName("w");
    String age;
    

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

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

    @Expose(deserialize = false)

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

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

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

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

    相关文章

      网友评论

          本文标题:Gson的使用

          本文链接:https://www.haomeiwen.com/subject/ldrkcktx.html