JSONObject自动隐藏为null的属性的解决办法

转载来自 : https://blog.csdn.net/hskw444273663/article/details/89024955

JSON字符串转JSONObject自动隐藏为null的属性
JSON中put的value=null,key=value会被隐藏掉
package hskw.chd;
 
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
 
/**  
 * @author hskw  
 * @date 2019年4月4日  
 */
public class JsonTest {
 
    public static void main(String[] args) {
        String json = "{\"msg\":\"success\",\"code\":0,\"data\":"
                + "{\"total\":1,\"size\":10,\"pages\":1,\"current\":1,"
                + "\"records\":[{\"id\":\"88db551925ea4822aeab2ddcd8c66dbe\","
                + "\"userId\":\"userId\",\"userName\":\"咨询人名称\","
                + "\"transId\":\"事项id\",\"reuserId\":null,\"consultCode\":"
                + "\"BH1554275529568\",\"telPhone\":\"电话\",\"title\":\"标题\","
                + "\"content\":\"咨询内容\",\"addDate\":null,\"reDate\":null,"
                + "\"reContent\":null,\"reType\":null,\"createBy\":null,"
                + "\"createDate\":null,\"updateBy\":null,\"updateDate\":null,"
                + "\"remarks\":\"备注\",\"delFlag\":\"0\"}]}}";
        //将JSON字符串转换为JSONObject对象
        JSONObject object = (JSONObject)JSONObject.parse(json);
        //打印格式化后的JSON对象
        System.out.println(toJson(object));
 
    }
 
    /**
     * 对象——格式化后的Json
     * @param object
     * @return
     */
    public static String toJson(Object object){
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting(); //生成格式化后的json
        Gson gson = gsonBuilder.create();
        return gson.toJson(object);
    }
}
为null的属性已被隐藏(在其中,只是隐藏了),运行结果如下 :

Fastjson的SerializerFeature序列化属性

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

 输出被隐藏的属性:


有时候我们不需要打印出来,而是让被隐藏的字段显示,前端要用,那就可以在转换前替换一下。

 

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**  
 * @author hskw  
 * @date 2019年4月4日  
 */
public class JsonTest {
 
    public static void main(String[] args) {
        String json = "{\"msg\":\"success\",\"code\":0,\"data\":"
                + "{\"total\":1,\"size\":10,\"pages\":1,\"current\":1,"
                + "\"records\":[{\"id\":\"88db551925ea4822aeab2ddcd8c66dbe\","
                + "\"userId\":\"userId\",\"userName\":\"咨询人名称\","
                + "\"transId\":\"事项id\",\"reuserId\":null,\"consultCode\":"
                + "\"BH1554275529568\",\"telPhone\":\"电话\",\"title\":\"标题\","
                + "\"content\":\"咨询内容\",\"addDate\":null,\"reDate\":null,"
                + "\"reContent\":null,\"reType\":null,\"createBy\":null,"
                + "\"createDate\":null,\"updateBy\":null,\"updateDate\":null,"
                + "\"remarks\":\"备注\",\"delFlag\":\"0\"}]}}";
        //将JSON字符串中为null替换成"",然后在转换为JSONObject对象
        JSONObject object = (JSONObject)JSONObject.parse(json.replaceAll("null", "\"\""));
        
//        String jsonString = JSONObject.toJSONString(object,SerializerFeature.WriteMapNullValue);
//        System.out.println(jsonString);
        
        //打印格式化后的JSON对象
        System.out.println(toJson(object));
 
    }
 


   

/**
     * 对象——格式化后的Json
     * @param object
     * @return
     */
    public static String toJson(Object object){
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting(); //生成格式化后的json
        Gson gson = gsonBuilder.create();
        return gson.toJson(object);
    }
}


运行效果:

{
  "msg": "success",
  "code": 0,
  "data": {
    "total": 1,
    "current": 1,
    "pages": 1,
    "size": 10,
    "records": [
      {
        "updateDate": "",
        "transId": "事项id",
        "consultCode": "BH1554275529568",
        "userName": "咨询人名称",
        "title": "标题",
        "delFlag": "0",
        "userId": "userId",
        "addDate": "",
        "content": "咨询内容",
        "telPhone": "电话",
        "reType": "",
        "createBy": "",
        "updateBy": "",
        "reDate": "",
        "reContent": "",
        "id": "88db551925ea4822aeab2ddcd8c66dbe",
        "remarks": "备注",
        "reuserId": "",
        "createDate": ""
      }
    ]
  }
}


 
 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值