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
随机推荐
- 在Github的fork项目中切换分支来提交PR
在Github的fork项目中切换分支来提交PR 查看远程所有分支 git branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本地和远程 ...
- OpenAI Chat completion API 入门指南
Chat completion API 入门指南 ChatGPT 由 OpenAI 最先进的语言模型 gpt-3.5-turbo 提供支持. 使用 OpenAI API,您可以使用 GPT-3.5-t ...
- torch.nn.Embedding使用详解
torch.nn.Embedding: 随机初始化词向量,词向量值在正态分布N(0,1)中随机取值.输入:torch.nn.Embedding(num_embeddings, – 词典的大小尺寸,比如 ...
- .Net简单使用了一下Redis
书接上回!!! 创建控制台应用 管理NuGet程序包 下载ServiceStack.Redis 最后写代码 1 class Program 2 { 3 static RedisClient redis ...
- Pyodide 中实现网络请求的 3 种方法
原文:https://lwebapp.com/zh/post/pyodide-fetch 需求 小编之前提过一个在线 Python 工具,核心技术是用到了一个叫 Pyodide 的库,能够让 Pyth ...
- 记录 mysql修改密码报错问题 (ERROR 1054 (42S22): Unknown column 'password' in 'field list')
报错如图: 查了相关文档 MySQL官网手册表示MySQL5.7版本后,password这个字段被改成 authentication_string, 命令修改如下: update user set a ...
- SpringMVC请求与响应
请求 知识点1:@RequestParam 名称 @RequestParam 类型 形参注解 位置 SpringMVC控制器方法形参定义前面 作用 绑定请求参数与处理器方法形参间的关系 相关参数 re ...
- 报错:cannot import name ‘escape’ from ‘jinja2’
jinja2版本问题导致 解决方法: 降低版本即可 pip3 install Jinja2==3.0.3 -U pip3 install werkzeug==2.0.3 -U jinja2介绍 jin ...
- jenkins配置自动化
1.自定义jenkins自定义工作空间 --从SVN获取的项目会更新到对应空间 2.安装svn插件,填写项目地址 3.构建定时触发器,每天23点执行 4.执行调用用例脚本,解决测试报告样式展示问题 5 ...
- MapReduce原理——Shuffle机制
在Map方法之后,Reduce方法之前的数据处理过程称之为Shuffle. Map方法输出的数据会获得对应的分区,进入环形缓冲区(缓冲区一半写索引,另一半写数据).数据达到缓冲区的80%会发生溢写.在 ...