欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java去除json數(shù)據(jù)中的null空值問(wèn)題

 更新時(shí)間:2019年08月12日 14:12:36   作者:走馬川行雪  
這篇文章主要介紹了詳解Java去除json數(shù)據(jù)中的null空值問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1、描述

@JsonInclude(JsonInclude.Include.NON_NULL)標(biāo)記是jackson包提供的json序列化方法,已經(jīng)集成于Springboot2.0中,此方法的配置意在可以對(duì)實(shí)體json序列化的時(shí)候進(jìn)行對(duì)應(yīng)的數(shù)值處理。

2、使用

用注解的方式放在標(biāo)記類或者屬性

@JsonInclude(JsonInclude.Include.NON_NULL)
public class User implements Serializable {
 
  private String username;
 
  private String password;
 
  @JsonInclude(JsonInclude.Include.NON_NULL)
  private String token;
 
}

用配置文件的方式全局配置(可能會(huì)影響到其他某些服務(wù)接口),例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;
    }
  }
  
  
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入理解Java設(shè)計(jì)模式之簡(jiǎn)單工廠模式

    深入理解Java設(shè)計(jì)模式之簡(jiǎn)單工廠模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之簡(jiǎn)單工廠模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • JDBC用法小結(jié)

    JDBC用法小結(jié)

    這篇文章主要介紹了JDBC用法,較為詳細(xì)的分析了基于JDBC進(jìn)行數(shù)據(jù)庫(kù)操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Java Web使用簡(jiǎn)單的批處理操作(記事本+Tomcat)

    Java Web使用簡(jiǎn)單的批處理操作(記事本+Tomcat)

    這篇文章主要介紹了Java Web使用簡(jiǎn)單的批處理操作 ,需要的朋友可以參考下
    2014-10-10
  • 深入Java Final

    深入Java Final

    本篇文章,小編將為大家介紹Java Final,有需要的朋友可以參考一下
    2013-04-04
  • 教你使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟

    教你使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟

    這篇文章主要介紹了使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟,本文分兩步通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08
  • Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包

    Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包

    這篇文章主要介紹了Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • FeignClientFactoryBean創(chuàng)建動(dòng)態(tài)代理詳細(xì)解讀

    FeignClientFactoryBean創(chuàng)建動(dòng)態(tài)代理詳細(xì)解讀

    這篇文章主要介紹了FeignClientFactoryBean創(chuàng)建動(dòng)態(tài)代理詳細(xì)解讀,當(dāng)直接進(jìn)去注冊(cè)的方法中,一步步放下走,都是直接放bean的定義信息中放入值,然后轉(zhuǎn)成BeanDefinitionHolder,最后在注冊(cè)到IOC容器中,需要的朋友可以參考下
    2023-11-11
  • Spring MVC處理方法返回值過(guò)程解析

    Spring MVC處理方法返回值過(guò)程解析

    這篇文章主要介紹了Spring MVC處理方法返回值過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解Hibernate緩存與性能優(yōu)化

    詳解Hibernate緩存與性能優(yōu)化

    在hibernate中,提到性能優(yōu)化,很自然地我們就想到了緩存。緩存是什么,都有哪些呢?下面這篇文章就主要給大家介紹了關(guān)于Hibernate緩存與性能優(yōu)化的相關(guān)資料,需要的朋友可以參考下。
    2017-02-02
  • 解決@MapperScan和@Mapper共存之坑X(jué)xxMapper?that?could?not?be?found.

    解決@MapperScan和@Mapper共存之坑X(jué)xxMapper?that?could?not?be?fo

    這篇文章主要介紹了解決@MapperScan和@Mapper共存之坑X(jué)xxMapper?that?could?not?be?found問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論