转json对象如何保留空值?
JSONWriter中有配置项,在JSONReader中没找到
public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(0, "a"); map.put(1, "b"); map.put(2, null); map.put(3, "c"); String header = JSON.toJSONString(map, JSONWriter.Feature.WriteMapNullValue); System.out.println(header); JSONObject jsonObject = JSON.parseObject(header); System.out.println(jsonObject); }
原提问者GitHub用户yuankc
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
JSONWriter类在fastjson库中提供,可以通过该类的特性来保留空值。而在JSONReader中,默认情况下保留空值已经是默认行为,没有特殊的配置项。
下面是演示代码,可以使用JSONWriter中的WriteMapNullValue特性来保留map中的null值:
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.JSONWriter;
import java.util.HashMap; import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(0, "a");
map.put(1, "b");
map.put(2, null);
map.put(3, "c");
String jsonStr = JSON.toJSONString(map, JSONWriter.WriteMapNullValue);
System.out.println(jsonStr);
JSONObject jsonObject = JSON.parseObject(jsonStr);
System.out.println(jsonObject.toJSONString());
}
} 在上述代码中,将WriteMapNullValue特性传递给了JSON.toJSONString()方法,就可以保留空值。输出结果如下:
{"0":"a","1":"b","2":null,"3":"c"} {"0":"a","1":"b","2":null,"3":"c"} 可以看到,两个输出结果中都保留了map中的空值。如果不传递WriteMapNullValue特性,则会省略掉null值,输出结果如下:
{"0":"a","1":"b","3":"c"} {"0":"a","1":"b","3":"c"} 可以看到,省略掉了map中的null值。最后的JSONObject.toJSONString()其实可以省略,直接输出JSONObject对象也是一样的。
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)