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串的字段如果和类中字段不一致,如何映射、转换?的更多相关文章

  1. C#类中字段封装为属性

    本文描述内容转载 https://zhidao.baidu.com/question/1174413218458798139.html 感谢 冥冥有你PD 的解答!!! 问题思索1 类成员包括变量和方 ...

  2. c#类中字段和方法中变量的声明问题

    字段和局部变量的作用域冲突 某些情况下可以区分名称相同,作用域相同的两个标识符.原因是C#在变量之间有一个基本的区分,它把在类级别声明的变量看作 字段,而把在方法中声明的变量看作局部变量. class ...

  3. MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致

    MyBatis系列二  之   数据库列名于程序实体类中字段名称不一致 情景:当数据库中的列名与我们程序实体类中的字段名称不一致         使用ResultMap节点配置信息  在映射文件中  ...

  4. [转]C# JSON格式的字符串读取到类中

    将JSON格式的字符串读取到类中 本例中建立JSON格式的字符串json,将其内容读取到Person类中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using Syste ...

  5. 关于Mybatis中表中字段名和POJO中字段名不同的解决方法

    项目结构: POJO中: package com.domain; /** * @author mzy * 定义orders表对应的实体类 */ public class Order { /** * C ...

  6. C#类中字段,属性与方法

    person类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  7. laravel 字段映射问题,表单中提交字段与数据表中字段不一致

    在遇到提交表单时,表单中的name属性与数据表中的字段不一致,报错, 解决方法: 参考1:提交表单的时候,表单的name属性和数据表字段名称是一样的,这样有什么不妥么? 你数据库的信息给前端透露得越多 ...

  8. Fsharp 类中的空字段

    fsharp设计之初就尽可能的避免使用null.在我的编程经验中null真是个错误之源,垃圾代码之源,95%的系统奔溃之源.其实在设计之初就应该考虑你的系统需要null表现什么?是未初始化的状态,还是 ...

  9. [原创] C# dynamic拼接Json串

    using Newtonsoft.Json; 之前拼接两个json串,是用的这样的代码 , json1.Length - ); json2 = json2.Insert(json2 - , tmp); ...

随机推荐

  1. arthas监控elasticsearch(7.x)

    arthas介绍 arthas是Alibaba推出的java诊断工具 官方文档 准备 准备docker环境 name port centos_arthas 3658:3658 docker run - ...

  2. 【刷题笔记】DP优化-单调队列优化

    单调队列优化 眼界极窄的ZZ之前甚至不会单调队列--(好丢人啊) 单调队列优化的常见情景: 转移可以转化成只需要确定一个维度,而且这个维度的取值范围在某个区间里 修剪草坪 这个题学长讲的好像是另外一个 ...

  3. JZOJ 2020.10.6 【NOIP2017提高A组模拟9.7】简单无向图

    简单无向图 题目 Description Input Output Sample Input 输入1: 4 2 1 1 2 输入2: 10 2 2 2 2 1 1 2 1 1 2 Sample Out ...

  4. 基于 MongoDB 动态字段设计的探索 (二) 聚合操作

    业务需求及设计见前文:基于 MongoDB 动态字段设计的探索 根据专业计算各科平均分 (总分.最高分.最低分) public Object avg(String major){ Aggregatio ...

  5. 0001_20190327_使用frp搭建内网穿透

    1. 环境 a)         公网服务器为阿里云的ECS  Windows  2008 R2服务器, 有公网IP地址; 这个作为frp的服务器 b)         内网是开发服务器, Cento ...

  6. PyQt(Python+Qt)学习随笔:QTreeView的标题表头header相关属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Qt Designer中,对于树型视图QTreeView,在属性在下面有专门一栏列出了跟 ...

  7. PyQt(Python+Qt)学习随笔:Qt Designer中部件的mouseTracking和tabletTracking属性

    在Qt Designer中的部件属性设置中,有mouseTracking和tabletTracking两个属性,这两个属性是跟踪鼠标或平板触控笔的移动轨迹的. 一.mouseTracking mous ...

  8. 什么是VIP?什么是IP漂移?

    IP地址和MAC地址 在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address.事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是 ...

  9. cookie的理解

    第一:每个特定的域名下最多生成20个cookie IE6或更低版本最多20个cookie IE7和之后的版本最多可以有50个cookie Firefox最多50个cookie chrome和Safar ...

  10. elasticsearch的基本了解

     以下内容参考官方文档https://www.elastic.co/guide/en/elasticsearch/reference/7.2/elasticsearch-intro.html 使用的学 ...