zoukankan      html  css  js  c++  java
  • 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”还有很多其他的属性,大家有兴趣可以自己研究,或者评论区一起讨论讨论。

    今天的内容就到这里了。

  • 相关阅读:
    Oracle内置函数之数值型函数
    【Java基础】java 获得本日,本周,本月的时间戳区间
    【mybatis】1、入门CURD基本操作(环境搭建)
    【hibernate】<第二节>hibernate的一对多映射(基本类型)
    Hibernate Java、Hibernate、SQL 之间数据类型转换
    【hibernate】<第一节>hibernate简单入门
    WebService wsdl没有types的问题
    Hibernate出现javax.naming.NoInitialContextException 错误的解决办法
    easyui 的 DataGrid View 使用
    Date与String之间相互转换
  • 原文地址:https://www.cnblogs.com/xianz666/p/13995163.html
Copyright © 2011-2022 走看看