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

    今天的内容就到这里了。

  • 相关阅读:
    BOM
    no response from Graphic Screen Painter Exiting
    Windows Mobile 中模拟按键
    C# 获取汉字拼音首字母
    Web Service介绍
    .net/c#中栈和堆的区别及代码在栈和堆中的执行流程详解
    使用JSON加速AJAX(By Sean Kelly)
    Sql字符串操作函数
    一个简单AJAX注册示例
    .Net平台开发的技术规范与实践精华总结
  • 原文地址:https://www.cnblogs.com/xianz666/p/13995163.html
Copyright © 2020-2023  润新知