首页 新闻 会员 周边

json字符串,转成json对象的时候,保留null

0
悬赏园豆:15 [已解决问题] 解决于 2019-07-02 10:59

例如字符串为:{"userID":1,userName:"xiaoming",nickName:null}
JSONObject body = JSONObject.parseObject(text);
使用上面这个方法之后nickName不见了,JSONObject 是import com.alibaba.fastjson.JSONObject

小埋的哥哥!的主页 小埋的哥哥! | 初学一级 | 园豆:110
提问于:2019-06-25 16:00
< >
分享
最佳答案
1

String str = "{userId:1,nickName:null}";

    String jsonObject = JSONObject.toJSONString(str, SerializerFeature.WriteMapNullValue);
    System.out.println(jsonObject);
收获园豆:15
小光 | 小虾三级 |园豆:1766 | 2019-06-25 16:21

我最后是要获取JSONObject 这个东西

小埋的哥哥! | 园豆:110 (初学一级) | 2019-06-25 16:23

@小埋的哥哥!: 试了一下没办法,jsonobject的parseobject()方法会自动过滤掉值为null的数据,既然nickname的值为null,就不要获取了,拿来也没用,用逻辑控制一下,获取不到就赋值为null,而且jsonobject的entryset()不能用add()和addall()方法,不能手动追加上去,要不然就在传值的时候把null换成空字符串。

小光 | 园豆:1766 (小虾三级) | 2019-06-25 16:49

@小埋的哥哥!: 或者在转json前处理一下
String str = "{userId:1,nickName:null}";
str = str.replaceAll("null","''");
System.out.println(str);
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println(jsonObject);

小光 | 园豆:1766 (小虾三级) | 2019-06-25 17:01
其他回答(3)
0

parseObject方法没有参数控制吗?如果没有,就把nickname设置为空字符串吧。我搜索到这个,你看有用没:
https://zhidao.baidu.com/question/1609557996711231467.html

你确定真的不见了,还是只是没有打印出来。

会长 | 园豆:12401 (专家六级) | 2019-06-25 16:37
0

String str = JSONObject.toJSONString(jsonMap,SerializerFeature.WriteNullStringAsEmpty);
System.out.println(str);
就行了

sum墨 | 园豆:429 (菜鸟二级) | 2019-06-27 17:28
0

Map<String,Object> map = JSONObject.parseObject(String,new TypeReference<Mao<String,Object>>(){})用这个可以解决

小埋的哥哥! | 园豆:110 (初学一级) | 2019-07-02 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册