java json 去除空_详解Java去除json数据中的null空值问题

详解Java去除json数据中的null空值问题

发布于 2020-3-15|

复制链接

摘记: 1、描述

@JsonInclude(JsonInclude.Include.NON_NULL)标记是jackson包提供的json序列化方法,已经集成于Springboot2.0中,此方法的配置意在可以对实体json序列化的时候进行对应的数值处理。2、使用

用注解的方式放在标记类或者属性 ..

1、描述@JsonInclude(JsonInclude.Include.NON_NULL)标记是jackson包提供的json序列化方法,已经集成于Springboot2.0中,此方法的配置意在可以对实体json序列化的时候进行对应的数值处理。2、使用

用注解的方式放在标记类或者属性

```java

@JsonInclude(JsonInclude.Include.NON_NULL)

public class User implements Serializable {

private String username;

private String password;

@JsonInclude(JsonInclude.Include.NON_NULL)

private String token;

}

```

用配置文件的方式全局配置(可能会影响到其他某些服务接口),例SpringBoot的application.yml

```plain

spring:

jackson:

default-property-inclusion: non_null

```

3、示例

使用前:{"username":"admin", "password":"admin123", "token":null}

使用后:{"username":"admin", "password":"admin123"}

PS:Java递归去除Json中的空值

```java

package com.dunyun.openapi.util.json;

import java.util.ArrayList;

import java.util.List;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.dunyun.platform.util.StringUtil;

public class RemoveNullAttr {

public static void main(String[] args){

String s="{\"employees\": [{ \"firstName\":\"\" , \"lastName\":\"Doe\" },{ \"firstName\":\"\" , \"lastName\":\"Smith\" },{ \"firstName\":\"Peter\" , \"lastName\":\"Jones\" }]}";

String a="{ \"firstName\":\"John\" , \"lastName\":\"\" }";

String b="{ \"firstName\":\"\" , \"lastName\":\"Doe\" }";

String test="{\"ka\":\"va\",\"kb\":{\"kbk\":\"kbv\",\"kbkk\":\"\",\"kbkkk\":{\"aaa\":\"bbb\",\"bbb\":\"\"},\"suzu\":[{\"sz\":\"sz\",\"szk\":\"\"}]},\"kc\":\"kcv\"}";

JSONObject js=JSONObject.parseObject(test);

RemoveNullAttr r=new RemoveNullAttr();

Object o=r.traverseJson(js);

System.out.println(o);

}

private Object traverseJson(Object json) {

// check null

if (json == null) {

return null;

}

try {

if (json instanceof JSONObject) {// if json is a Map

JSONObject jsonObj = (JSONObject)json;

List keyList=new ArrayList();

for(String k:jsonObj.keySet()){

String value=jsonObj.get(k).toString();

if(StringUtil.isEmpty(value)){

keyList.add(k);

//jsonObj.remove(k);

}else{

if(isJsonObj(value)){

jsonObj.put(k, traverseJson(JSONObject.parseObject(value)));

}else{if(isJsonArr(value)){

//value=;

jsonObj.put(k, traverseJson(JSONArray.parseArray(value))) ;

}

}

}

}

for(String k:keyList){

jsonObj.remove(k);

}

return jsonObj;

}

else if (json instanceof JSONArray) {// if json is an Array

JSONArray jsonArr = (JSONArray)json;

int len = jsonArr.size();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值