当前位置: 首页 > 编程笔记 >

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

钱锦
2023-03-14
本文向大家介绍详解Java去除json数据中的null空值问题,包括了详解Java去除json数据中的null空值问题的使用技巧和注意事项,需要的朋友参考一下

1、描述

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

2、使用

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

@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

spring: 
  jackson:
    default-property-inclusion: non_null

 3、示例

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

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

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();
        for (int i = 0; i < len; ++i) {
          // TODO: do something here
          jsonArr.set(i, traverseJson(jsonArr.get(i)));
        }
//        return retArr;
//        
//      } else {// if json is just a raw element
//        
//        // TODO: do something here
//        return json;
        return jsonArr;
//        
      }
      
    } catch (Exception e) {
      e.printStackTrace();// deal Exception or throw it
    }
    
    return null;
  }
  
  public boolean isJsonObj(Object o){
    try{
      JSONObject js=JSONObject.parseObject(o.toString());
      return true;
      
    }catch(Exception e){
      return false;
    }
  }
  
  public boolean isJsonArr(Object o){
    try{
      JSONArray js=JSONArray.parseArray(o.toString());
      return true;
      
    }catch(Exception e){
      return false;
    }
  }
  
  
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍详解MySQL中的NULL值,包括了详解MySQL中的NULL值的使用技巧和注意事项,需要的朋友参考一下 我们已经看到使用WHERE子句的SQL SELECT命令来从MySQL表获取数据。但是,当我们试图给的条件比较字段或列的值为NULL,它不能正常工作。 为了处理这种情况,MySQL提供了三大运算符     IS NULL: 此运算符返回true,当列的值是NULL。     IS

  • 本文向大家介绍详解javascript数组去重问题,包括了详解javascript数组去重问题的使用技巧和注意事项,需要的朋友参考一下 首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据。遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复。于是乎,我写出了如下代码A: 写完之后,忽然想起来前几天刚看的ECMAScript 5中的数组方法indexOf 可以检索数组元素。于是我又

  • 本文向大家介绍php数组去除空值函数分享,包括了php数组去除空值函数分享的使用技巧和注意事项,需要的朋友参考一下 对于一个一维的php数组,如何清除其中值为空的元素呢?直接的办法是foreach循环一下,一个个判断排除。不过这个方法还是略显复杂,下面分享一下今天看到的一个方法,非常简洁 是不是非常实用的函数呢,希望大家能够喜欢。

  • 本文向大家介绍Java中关于Null的9个解释(Java Null详解),包括了Java中关于Null的9个解释(Java Null详解)的使用技巧和注意事项,需要的朋友参考一下 对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道

  • 字符串中存在的首尾空格一般情况下都没有任何意义,如字符串“ Hello ”,但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String 类提供的 trim() 方法。 trim() 方法的语法形式如下: 使用 trim() 方法的示例如下: 从该示例中可以看出,字符串中的每个空格占一个位置,直接影响了计算字符串的长度。 如果不确定要操作的

  • 本文向大家介绍java json不生成null或者空字符串属性(详解),包括了java json不生成null或者空字符串属性(详解)的使用技巧和注意事项,需要的朋友参考一下 大家平时用java对象转json字符串。null或者空字符串属性是不需要生成到json字符串里面的。 如下方式生成,没有使用的属性也会生成json字符串属性。 Gson使用: 如果大数据传输,或者存储到数据库,合理生成jso