转载来自 : 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": ""
}
]
}
}