gson TypeAdapter 和FieldNamingStrategy,SerializedName实现属性名称的设置别名
gson TypeAdapter 和FieldNamingStrategy,SerializedName实现属性名称的设置别名
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();
}
}
} }
gson TypeAdapter 和FieldNamingStrategy,SerializedName实现属性名称的设置别名的更多相关文章
- json字符串转java对象,json中字段名称与对象属性名称不一致
json字符串转java对象,json字段名称与对象属性名称不一致可以在对象属性上添加注解@SerializedName解决
- C#通过属性名称获取(读取)属性值的方法
之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...
- 配置iis时,浏览项目提示 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
无法识别的属性“targetFramework”.请注意属性名称区分大小写. 行 12: </appSettings>行 13: <system.web>行 14: ...
- java-读取类中的属性名称和值
方法 /** * 获取类中的所有属性明名称和值(因涉及到可能会是继承关系的父类,所以从f中去属性名称,从f2中取值,两个可以一样,也可以使父类) * @param f:读取属性类(如果取父类的,则这里 ...
- IIS7.0提示---无法识别的属性“targetFramework”。请注意属性名称区分大小写。
当我把我做的网站放在IIS7.0的服务器上的时候,浏览时提示这个错误信息 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消 ...
- 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
转自:http://blog.sina.com.cn/s/blog_48964b12010157p0.html 配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息 ...
- 无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误分析以及解决方案
我的配置文件中是这样写的,<compilation debug="true" targetFramework="4.0"> 发布在iis上出现了 “ ...
- 配置错误--分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
在部署网站的时候,很容易遇到这个一样错误:分析器错误消息: 无法识别的属性“targetFramework”.请注意属性名称区分大小写. 错误如图: 错误原因: 部署网站时,使用的应用程序池版本不对 ...
- EasyUI DataGrid定制默认属性名称
EasyUI DataGrid绑定服务器返回Json数据的解决方案 1. 服务器返回的数据对象格式,及初始化返回值 public class RequestResult { private int c ...
- IntelliJ IDEA中类似Eclipse自动补全变量名称和属性名称的快捷键
IntelliJ IDEA 默认快捷键模式下 自动补全变量名称 : Ctrl + Alt + v 自动补全属性名称 : Ctrl + Alt + f
随机推荐
- vue 获取select选中的当前option所在对象的各种值
- GPS地图生成03之数据获取
1. 引言¶ 六只脚是国内著名的户外网站,拥有大量的户外GPS轨迹路线,网址为:http://www.foooooot.com/ 2. 数据分析¶ 2.1 获取所有轨迹¶ 搜索关键 ...
- Kotlin学习-函数(表达式,lambda,高阶函数)
Kotlin中函数 3种表达形式: 一般函数: fun sum(a: Int, b: Int): Int { return a+b } 简化函数为表达式形式: fun sum2(a: Int, b: ...
- tinyriscv仿真环境
环境要求:iverilog gtkwave 在sim目录新建makefile,内容如下. BIN=rv32ui-p-jal all: hexf comp vvp hexf: cp ../tests/i ...
- Code Review在TDSQL-C 的应用实践
1.1 为什么重视Code Review? 结合下面这个例子,我们来谈谈为什么要重视code review.假设你作为新人刚入职,领导分配了一个需求,于是接下来做了下面这些事: 为了完成任务疯狂敲了三 ...
- org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active解决办法
解决办法 在配置elasticsearch.yml中加上 ingest.geoip.downloader.enabled: false
- Qt控制台输出显示乱码
Qt控制台输出显示乱码 https://jingyan.baidu.com/article/ab69b2709aab0b2ca7189f3d.html
- C++ 中的匿名函数(lambda表达式)
问题引入 使用std::sort函数对自定义类型排序时,我们需要传入一个比较函数作为参数.该比较函数只需要使用一次,但占有一个全局命名域中的名字,而且非常短,短到不需要名字就知道它的作用.这很浪费命名 ...
- iOS开发 性能优化
1.快 2.稳 3.省 4.小
- Python语言基础实验(第四周)
Python语言基础实验(第四周) 一.实验目的 1.了解并掌握python中序列及序列的常用操作. 2.根据实际需要运用合适的序列类型来完成实验. 二.实验环境 软件版本:Python 3.10 6 ...