美文网首页
JSONObject转JSON字符串的问题

JSONObject转JSON字符串的问题

作者: 明月几何8 | 来源:发表于2019-11-20 22:21 被阅读0次

    今天在写项目的时候遇到了JSONObject转JSON字符串的问题,在转字符串的时候,value是null的值在转换的时候过滤掉了,最终的字符串中没有值为null的键值对,比如:

    JSONObject json = new JSONObject();
    json.put("name","张三");
    json.put("age",18);
    json.put("gender",null);
    String strJson = json.toJSONString();
    System.out.println(strJson );// {"name":"张三", "age":18},gender属性过滤掉了
    

    为了解决这种问题,我在网上百度找到了解决方法:

    JSONObject.toJSONString(strJson , SerializerFeature.WriteMapNullValue);
    System.out.println(strJson );// {"name":"张三", "age":18, "gender":null}
    

    SerializerFeature属性解释

    名称 含义 备注
    QuoteFieldNames 输出key时是否使用双引号,默认为true
    UseSingleQuotes 使用单引号而不是双引号,默认为false
    WriteMapNullValue 是否输出值为null的字段,默认为false
    WriteEnumUsingToString Enum输出name()或者original,默认为false
    WriteEnumUsingName
    UseISO8601DateFormat Date使用ISO8601格式输出,默认为false
    WriteNullListAsEmpty List字段如果为null,输出为[],而非null
    WriteNullStringAsEmpty 字符类型字段如果为null,输出为”“,而非null
    WriteNullNumberAsZero 数值字段如果为null,输出为0,而非null
    WriteNullBooleanAsFalse Boolean字段如果为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
    NotWriteDefaultValue
    BrowserSecure
    IgnoreNonFieldGetter

    相关文章

      网友评论

          本文标题:JSONObject转JSON字符串的问题

          本文链接:https://www.haomeiwen.com/subject/usmaictx.html