Json串的字段如果和类中字段不一致,如何映射、转换?
Json串是我们现在经常会遇到的一种描述对象的字符串格式。在用Java语言开发的功能中,也经常需要做Json串与Java对象之间的转换。
fastjson就是经常用来做Json串与Java对象之间的转换,就像下面我用fastjson实现的示例。
可是有的情况就无法这样简单处理,比如json串的字段和类中的字段不一致时。不一致有以下这些情况。
json串的字段名与类中的字段名不一致
比如我们上面的例子中类中的字段名叫“id”,而要求json中的字段名叫“tid”。那要怎么办呢?fastjson已经替我们想到了。看我下面的示例。
和上面示例的代码的区别是在需要处理的字段上又加了一个注解,通过这个注解来告诉fastjson对应的json的字段名就可以了。执行一下,看看能不能达到想要的效果。
json串中的字段名变成了“tid”,达到了我们的预期。
类中的字段不需要转换到json串中
还有的情况是我们java类中的一些字段不希望在转换后的json串中出现,那这种情况要怎么处理呢?这个需求“@JSONField”注解照样能帮我们解决。
看示例。
“@JSONField”注解有个属性叫serialize,默认值为true,表示这个字段是会转换(序列化)到json串中。设置成false就是表示这个字段不转换到json串中。
照样执行看看结果是否达到我们的预期。
在json串中已经没有了“id”这个字段的内容了。
Json串中的字段不希望转换到java对象中
还有的时候是Json串中有的字段在java类中有对应位置同名的字段,但是我们又不希望这个字段转换到java对象中,那又要怎么办呢?“@JSONField”注解还是能完成这个任务。
这次使用了“@JSONField”注解的另外一个属性deserialize,大家是不是已经猜出来了这个属性的含义呢。
这个属性值一样默认为true,表示从json串转换(反序列化)为java对象时转换这个字段。那我们不需要转换这个字段就设置false就可以了。
一起来看看执行结果,是不是达到了我们的要求。
恩,json中的id没有转换到对象中。
这个“@JSONField”还有很多其他的属性,大家有兴趣可以自己研究,或者评论区一起讨论讨论。
今天的内容就到这里了。
Json串的字段如果和类中字段不一致,如何映射、转换?的更多相关文章
- C#类中字段封装为属性
本文描述内容转载 https://zhidao.baidu.com/question/1174413218458798139.html 感谢 冥冥有你PD 的解答!!! 问题思索1 类成员包括变量和方 ...
- c#类中字段和方法中变量的声明问题
字段和局部变量的作用域冲突 某些情况下可以区分名称相同,作用域相同的两个标识符.原因是C#在变量之间有一个基本的区分,它把在类级别声明的变量看作 字段,而把在方法中声明的变量看作局部变量. class ...
- MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致
MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致 情景:当数据库中的列名与我们程序实体类中的字段名称不一致 使用ResultMap节点配置信息 在映射文件中 ...
- [转]C# JSON格式的字符串读取到类中
将JSON格式的字符串读取到类中 本例中建立JSON格式的字符串json,将其内容读取到Person类中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using Syste ...
- 关于Mybatis中表中字段名和POJO中字段名不同的解决方法
项目结构: POJO中: package com.domain; /** * @author mzy * 定义orders表对应的实体类 */ public class Order { /** * C ...
- C#类中字段,属性与方法
person类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- laravel 字段映射问题,表单中提交字段与数据表中字段不一致
在遇到提交表单时,表单中的name属性与数据表中的字段不一致,报错, 解决方法: 参考1:提交表单的时候,表单的name属性和数据表字段名称是一样的,这样有什么不妥么? 你数据库的信息给前端透露得越多 ...
- Fsharp 类中的空字段
fsharp设计之初就尽可能的避免使用null.在我的编程经验中null真是个错误之源,垃圾代码之源,95%的系统奔溃之源.其实在设计之初就应该考虑你的系统需要null表现什么?是未初始化的状态,还是 ...
- [原创] C# dynamic拼接Json串
using Newtonsoft.Json; 之前拼接两个json串,是用的这样的代码 , json1.Length - ); json2 = json2.Insert(json2 - , tmp); ...
随机推荐
- 20201101_Python的虚拟环境问题
虚拟环境使用总结: 1. 安装创建虚拟环境要使用的工具virtualenv pip install virtualenv -i https://pypi.douban.com/simple/ #使用 ...
- keeplived高可用集群
什么是Keeplived? Keepalived是Linux下面实现VRRP备份路由的高可靠性运行件.基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接.二者 ...
- opencv-python imread、imshow浏览目录下的图片文件
☞ ░ 前往老猿Python博文目录 ░ 一.几个知识点 1.1.使用Python查找目录下的文件 具体请参考<Python正则表达式re模块和os模块实现文件搜索模式匹配>. 1.2.o ...
- 第7章 Python类型、类、协议 第7.1节 面向对象程序设计的相关知识
Python被视为一种面向对象的语言,在介绍Python类相关的内容前,本节对面向对象程序设计相关的概念进行简单介绍. 一. 类和对象(实例) 在面向对象的程序设计(OOP)过程中有两个重要概念 ...
- PyQt(Python+Qt)学习随笔:QSlider滑动条部件功能简介
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Horizo ...
- 第15.16节 PyQt(Python+Qt)入门学习:PyQt中的信号(signal)和槽(slot)机制以及Designer中的使用
老猿Python博文目录 老猿Python博客地址 一.引言 前面一些章节其实已经在使用信号和槽了,但是作为Qt中最重要的机制也是Qt区别与其他开发平台的重要核心特性,还是非常有必要单独介绍. 二.信 ...
- PyQt(Python+Qt)学习随笔:布局控件layoutSpacing属性
在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...
- PyQt(Python+Qt)学习随笔:窗口部件大小策略sizePolicy与SizeConstraint布局大小约束的关系
在<PyQt(Python+Qt)学习随笔:Qt Designer中部件的三个属性sizeHint缺省尺寸.minimumSizeHint建议最小尺寸和minimumSize最小尺寸>. ...
- 上传到github
我是为了自己下次不用再找github上传的地方了,索性就复制了一篇 转载于 https://blog.csdn.net/m0_37725003/article/details/80904824 首先你 ...
- python zip()函数用法
zip() --内建函数 zip([iterable, ...]) 它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表) ...