首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >gson TypeAdapter 和FieldNamingStrategy,SerializedName实现属性名称的设置别名

gson TypeAdapter 和FieldNamingStrategy,SerializedName实现属性名称的设置别名

作者头像
oktokeep
发布2024-10-09 10:46:42
发布2024-10-09 10:46:42
35400
代码可运行
举报
文章被收录于专栏:第三方工具第三方工具
运行总次数:0
代码可运行

gson TypeAdapter 和FieldNamingStrategy,SerializedName实现属性名称的设置别名

代码语言:javascript
代码运行次数:0
运行
复制
package com.example.core.mydemo.TypeAdapter;

import com.google.gson.FieldNamingStrategy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;

import java.lang.reflect.Field;

/**
 * 打印输出结果:
 jsonStr={"Result":null,"id":1,"data":null}
 bean=result:null id:1 data:null
 bean2=result:-1 id:1 data:null
 jsonStr2={"Result":-1,"id":1,"DATA":"Empty"}
 */
public class UserBean {
    @SerializedName("Result")
    public Integer result;
    public Long id;
    public String data;

    @Override
    public String toString() {
        return "result:"+result+" id:"+id+" data:"+data;
    }

    public static void main(String[] args) {
//        Gson gson = new Gson();
        //serializeNulls输出null
        Gson gson = new GsonBuilder().serializeNulls().create();
        UserBean userBean = new UserBean();
        userBean.setId(1);
//        userBean.setData(null);
//        userBean.setResult(null);

        String jsonStr = gson.toJson(userBean);
        System.out.println("jsonStr=" + jsonStr);
        UserBean bean = gson.fromJson(jsonStr,UserBean.class);
        System.out.println("bean=" + bean.toString());


        Gson gson2 = new GsonBuilder()
                .registerTypeAdapter(String.class,new StringAdapter())
                .registerTypeAdapter(Integer.class,new IntegerAdapter())
                .registerTypeAdapter(int.class,new IntegerAdapter())
                .setFieldNamingStrategy(new FirstLowerCaseStrategy())
                .create();

        UserBean bean2 = gson2.fromJson(jsonStr,UserBean.class);
        System.out.println("bean2=" + bean2.toString());

        System.out.println("jsonStr2=" + gson2.toJson(bean2));


    }

    public int getResult() {
        return result;
    }

    public void setResult(Integer result) {
        this.result = result;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }


    public static class FirstLowerCaseStrategy implements FieldNamingStrategy {

        @Override
        public String translateName(Field f) {
//            System.out.println("name=" + f.getName());
            if("data".equalsIgnoreCase(f.getName())){
//                return f.getName().toLowerCase();
//                System.out.println("upper=" + f.getName().toUpperCase());
                return f.getName().toUpperCase();
            }else{
                return f.getName();
            }
        }
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档