给JSON中put的value=null时,这对key=value会被隐藏掉。

本文详细解析了Fastjson中用于控制序列化行为的SerializerFeature属性,包括如何处理空值、引用名称时是否使用双引号、输出空列表和空字符串的方式等关键特性。

当我们在JSON里像这样json.put("key",null);put值进去的话,这个键值对就会被隐藏掉例如下面的例子:

<pre name="code" class="html">	Map < String , Object > jsonMap = new HashMap< String , Object>();
		jsonMap.put("a",1);
		jsonMap.put("b",null);
		String str = JSONObject.toJSONString(jsonMap);
		System.out.println(str);

 控制台输出的是:{"a":1} 

如果加上SerializerFeature.WriteMapNullValue,

String str = JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue);

控制台输出的是:{"b":null,"a":1}

还可以设置其它的属性:

Fastjson的SerializerFeature序列化属性

--来自oschina bfleeee博客

QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null


要将字符串 `String str = "\"value\":\"{insertIDNO=null, insertName=null}\"";` 转换为 JSON 格式,可以按照以下步骤进行: 1. 首先,去字符串中的转义字符 `\"`。 2. 然后,将字符串中的内容 `value:{insertIDNO=null, insertName=null}` 转换为 JSON 格式。 最终转换后的 JSON 字符串如下: ```json { "value": { "insertIDNO": null, "insertName": null } } ``` 如果你需要在代码中进行转换,可以使用 Java 的 JSON 库,例如 Jackson 或 Gson。以下是使用 Jackson 进行转换的示例代码: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; public class StringToJson { public static void main(String[] args) { String str = "\"value\":\"{insertIDNO=null, insertName=null}\""; try { // 去转义字符 str = str.replace("\\\"", ""); // 分割字符串 String[] parts = str.split("\":\""); String key = parts[0]; String value = parts[1]; // 创建 ObjectMapper 实例 ObjectMapper mapper = new ObjectMapper(); // 创建 ObjectNode ObjectNode objectNode = mapper.createObjectNode(); // 解析 value 部分 String[] keyValuePairs = value.split(", "); for (String pair : keyValuePairs) { String[] keyValue = pair.split("="); String k = keyValue[0]; String v = keyValue[1]; // 设置值 objectNode.put(k, v.equals("null") ? null : v); } // 构建最终的 JSON 对象 ObjectNode finalNode = mapper.createObjectNode(); finalNode.set(key, objectNode); // 输出 JSON 字符串 String jsonString = mapper.writeValueAsString(finalNode); System.out.println(jsonString); } catch (Exception e) { e.printStackTrace(); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值