广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用JSON.toJSONString()返回{}的原因
  • 206
分享到

使用JSON.toJSONString()返回{}的原因

2024-04-02 19:04:59 206人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录JSON.tojsONString()返回{}原因测试代码原因JSON.toJSONString的坑有些字段没有了1.问题2.解决方式3.原因JSON.toJSONString(

JSON.toJSONString()返回{}原因

测试代码

public static void main(String[] args) {undefined
ResultModel resultModel = ResultModel.error(“110”,“error”);
System.out.println(JSON.toJSONString(resultModel));
}

原因

ResultModel 未添加Getter,只需添加Getter即可

JSON.toJSONString的坑有些字段没有了

1.问题

在使用fastjson中的JSON.toJSONString方法将对象转换成json字符串的时候,发现有些字段没有了。如:

public static void main(String[] args) {
        Map<String,Object>map=new HashMap<>();
        map.put("id","1");
        map.put("name",null);
        System.out.println(JSON.toJSONString(map));
    }

输出结果: {"id":"1"}

输出结果中没有了 "name"这个属性了;

2.解决方式

加SerializerFeature.WriteMapNullValue)

public static void main(String[] args) {
        Map<String,Object>map=new HashMap<>();
        map.put("id","1");
        map.put("name",null);
        System.out.println(JSON.toJSONString(map,SerializerFeature.WriteMapNullValue));
    }

输出结果: {"name":null,"id":"1"}

3.原因

转json串,默认设置了许多序列化配置:

名称含义备注
QuoteFieldNames输出key时是否使用双引号,默认为true 
UseSingleQuotes使用单引号而不是双引号,默认为false 
WriteMapNullValue是否输出值为null的字段,默认为false 
WriteEnumUsingToStringEnum输出name()或者original,默认为false 
UseISO8601DateFORMatDate使用ISO8601格式输出,默认为false 
WriteNullListAsEmptyList字段如果为null,输出为[],而非null 
WriteNullStringAsEmpty字符类型字段如果为null,输出为”“,而非null 
WriteNullNumberAsZero数值字段如果为null,输出为0,而非null 
WriteNullBooleanAsFalseBoolean字段如果为null,输出为false,而非null 
SkipTransientField如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true 
SortField按字段名称排序后输出。默认为false 
WriteTabAsSpecial把\t做转义输出,默认为false 
PrettyFormat结果是否格式化,默认为false 
WriteClassName序列化时写入类型信息,默认为false。反序列化是需用到 
DisableCircularReferenceDetect消除对同一对象循环引用的问题,默认为false 
WriteSlashAsSpecial对斜杠’/’进行转义 
BrowserCompatible将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false 
WriteDateUseDateFormat全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); 
DisableCheckSpecialChar一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false 
NotWriteRootClassName  
BeanToArray将对象转为array输出 
WriteNonStringKeyAsString不是String的字段写为String 
NotWriteDefaultValue不设默认值 
BrowserSecure  
IgnoreNonFieldGetter忽略没有getter方法的属性 
WriteEnumUsingName目前版本的fastjson默认对enum对象使用WriteEnumUsingName属性,因此会将enum值序列化为其Name。
使用WriteEnumUsingToString方法可以序列化时将Enum转换为toString()的返回值;同时override toString函数能够将enum值输出需要的形式。但是这样做会带来一个问题,对应的反序列化使用的Enum的静态方法valueof可能无法识别自行生成的toString(),导致反序列化出错。
如果将节省enum序列化后的大小,可以将enum序列化其ordinal值,保存为int类型。fastJson在反序列化时,如果值为int,则能够使用ordinal值匹配,找到合适的对象。
fastjson要将enum序列化为ordinal只需要禁止WriteEnumUsingName feature。
首先根据默认的features排除WriteEnumUsingName,然后使用新的features序列化即可。
 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用JSON.toJSONString()返回{}的原因

本文链接: https://www.lsjlt.com/news/138238.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用JSON.toJSONString()返回{}的原因
    目录JSON.toJSONString()返回{}原因测试代码原因JSON.toJSONString的坑有些字段没有了1.问题2.解决方式3.原因JSON.toJSONString(...
    99+
    2022-11-13
  • java process.waitfor返回1的原因及解决
    目录java process.waitfor返回1大致的原因如下process.waitFor()的返回值含义以下是Linux中返回值对照表java process.waitfor返...
    99+
    2022-11-12
  • Mongoose经常返回e11000 error的原因分析
    发现问题 最近在工作中遇到了一个问题,在定义了schema之后,每一次save都会报E11000,但是db.xxx.find()里面根本就没有冲突的条目,什么情况呢? 问题分析 可能问题出在定义的schem...
    99+
    2022-06-04
    原因 Mongoose error
  • java file.renameTo返回false的原因及解决方案
    java file.renameTo返回false原因 需要对文件夹下的文件重命名,发现返回false了,先用main方法测试,发现没问题,如下 public static vo...
    99+
    2022-11-12
  • vue里data要用return返回数据的原因是什么
    这篇“vue里data要用return返回数据的原因是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2022-10-19
  • Python 函数默认返回None原因有哪些
    小编给大家分享一下Python 函数默认返回None原因有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python 有一项默认的做法,很多编程语言都没有,所...
    99+
    2023-06-16
  • Python返回函数的原理及使用
    这篇文章主要介绍“Python返回函数的原理及使用”,在日常操作中,相信很多人在Python返回函数的原理及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python返回函数的原理及使用”的疑惑有所帮助!...
    99+
    2023-06-15
  • ajax请求返回的数据看不到回调函数的原因是什么
    本篇内容介绍了“ajax请求返回的数据看不到回调函数的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-19
  • 阿里云服务器返回RST的原因与解决方法
    阿里云服务器返回RST是一个常见的网络错误,它表示服务器返回了一个“请求状态”(ResponseStatus)的表示。这个表示可能包含服务器返回的信息,如请求的成功或失败,以及错误的原因。这篇文章将详细说明阿里云服务器返回RST的原因,并...
    99+
    2023-11-23
    阿里 解决方法 原因
  • VSstudio中scanf返回值被忽略的原因及解决方法(推荐)
    相信有不少人在使用vs的时候会遇到以下这个问题:scanf返回值被忽略,接下来我就告诉大家该如何解决这个问题 出现问题的原因: 因为scanf()在读取数据时不检查边界,所以可能会...
    99+
    2022-11-13
  • 探讨PHP返回数据乱码问题的原因和解决方法
    PHP作为一种流行的脚本语言,通过处理HTTP请求和响应的方式,使得Web应用程序开发变得简单高效。然而,PHP返回数据乱码问题在应用程序开发过程中经常出现,这给开发人员带来了很多麻烦。本篇文章将探讨PHP返回数据乱码问题的原因和解决方法。...
    99+
    2023-05-14
  • 怎么使用SAFEARRAY返回
    这篇文章主要介绍了怎么使用SAFEARRAY返回,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。IDE用的是VC7.1开始都差不多,建立工程,建立COM对象,建立方法: 接口定...
    99+
    2023-06-08
  • Android实现类似IOS右滑返回的效果(原因分析及解决办法)
    使用类库SwipeBackLayout https://github.com/Issacw0ng/SwipeBackLayout 出现的问题: 1. 主Activity返回...
    99+
    2022-06-06
    IOS Android
  • 使用mysql的原因
    这篇文章给大家分享的是有关使用mysql的原因的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。市场上有许多关系数据库管理系统。包括Microsoft SQL Server,Micr...
    99+
    2022-10-18
  • Win8.1 2014 Update卸载返回到原先的Win8.1
      微软将于今年春季发布的Windows 8.1 Update的升级文件已经被国外网友率先发布到网上,从小编实测Windows 8.1 Update RTM版本后发现所谓的升级更新,仅仅是在Win8.1系统上加入部分功能...
    99+
    2023-06-03
    Win8.1 Update 卸载 2014
  • TP5 模型更新的返回值、返回值的判断以及所使用的SQL
    TP5 模型更新主要使用静态方法 update 和动态方法 save  静态方法 update 直接使用模型类静态调用,例如 User 模型类更新主键为1的用户的 username 为 a 方式一 $data = ['id' =...
    99+
    2023-09-06
    开发语言 php ThinkPHP
  • TP5 模型查询的返回值、返回值的判断以及所使用的SQL
    单条查询 使用 静态方法 get  或者 动态方法 find  静态方法 get 直接使用模型类静态调用,例如 User 模型类获取主键为1的用户 User::get(1); 返回值 返回模型类的实例 举例 获取主键为1的用户 $us...
    99+
    2023-09-02
    开发语言 php Thinkphp
  • 微信小程序中如何使用wx.navigateTo返回到原页面
    这篇“微信小程序中如何使用wx.navigateTo返回到原页面”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“微信小程序中如何使用wx.navigateTo返回到原页面”,小编整理了以下知识点...
    99+
    2023-06-26
  • php使用redis的原因
    这篇文章将为大家详细讲解有关php使用redis的原因,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、 Redis简介 redis是Nosql数据库中使用...
    99+
    2022-10-18
  • vue项目如何使用$router.go(-1)返回时刷新原来的界面
    目录使用$router.go(-1)返回时刷新原来的界面问题如下解决方法1解决方法2this.$router.back()与this.$router.go(-1)返回上一页的区别使用...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作