国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 使用Jackson 處理 null 或者 空字符串

使用Jackson 處理 null 或者 空字符串

2021-11-24 13:06wangyun522 Java教程

這篇文章主要介紹了使用Jackson 處理 null 或者 空字符串,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Jackson 處理 null 或者 空字符串

Retrofit 配合 Jackson 反序列化,就是將字符串解析為java bean 對象 的時候 ,如果遇到服務端由于各種原因會導致 有些String類型的字段值為null ,需要替換為空字符串或者占位符“-”什么的,并且不確定 到底會在哪個字段,可以如下處理

這里要區分序列化和反序列化

序列化,就是處理java bean對象轉換為字符串,通常設置

?
1
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

這樣在java bean中對象有值為null ,就不會將這個字段或屬性序列化為字符串。

或者在java bean 模型定義中注解,表明不將其序列化

?
1
@JsonInclude(JsonInclude.Include.NON_NULL)

反序列化,就是將服務器端返回的json串轉換為java 對象,通常在處理null值, 將某些值更改為指定格式也類似。可以如下操作

在使用jackson 的時候,通常會通過 compile ‘com.squareup.retrofit2:converter-jackson:2.3.0'集成 官方的 JacksonConverterFactory ,其實它除了自動引入jackson外,另外引入了三個類,可以拷貝出來,方便修改引用,其中只需要更改 JacksonConverterFactory.java 中的create函數即可。針對反序列化過程中String類型處理,添加自定義反序列化器。

?
1
2
3
4
5
6
7
public static JacksonConverterFactory create() {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule module = new SimpleModule();
        module.addDeserializer(String.class, new CustomStringDeserializer());
        objectMapper.registerModule(module);
        return create(objectMapper);
    }

其中 CustomStringDeserializer.java 如下 ,重要的就是 getNullValue()的覆寫,它決定了如果 反序列化json串中有一個字段的值是 null, 處理策略,這里是默認返回“-”。

?
1
2
3
4
5
6
7
8
9
10
11
12
public class CustomStringDeserializer extends JsonDeserializer<String> {
    @Override
    public String deserialize(JsonParser jsonparser,
                              DeserializationContext deserializationcontext) throws IOException,
            JsonProcessingException {
        return jsonparser.getText();
    }
    @Override
    public String getNullValue() {
        return "-";
    }
}

這是全局處理情況,如果是類級別的,需要在類上加反序列器,但要處理的就不只是String了,類中所有字段你都需要處理,因為這時,返回的是一個類,

?
1
2
3
4
5
6
public class CustomClassDeserializer extends JsonDeserializer<T> {
    @Override
    public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        return null;
    }
}

然后在類的bean上使用注解,表明該類用這個反序列化器來處理

?
1
2
@JsonDeserialize(using = CustomClassDeserializer.class)
class yourClass()

如果是字段屬性級別的

需要在相應的字段屬性上這樣使用

?
1
2
@JsonDeserialize(using = CustomStringDeserializer.class)
private String name;

還有一種情形是反序列化的時候如果字段是形如“”的空字符串,想轉換成null,那就不需要覆寫 getNullValue() ,直接在deserialize中處理就好。

jackson解決:null到"", 空值處理為空串

1.一個比較頭疼的問題

jackson + spring 支持rest接口,輸出的JSON 對于null的字符串是invoiceTitle: null,但是接受方希望返回的是invoiceTitle: ""。解決方法重寫ObjectMapper

2.代碼如下

?
1
2
3
4
5
6
7
8
9
10
11
public class MyJsonMapper extends ObjectMapper{
  public MyJsonMapper(){
    super();
    this.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { 
      @Override
      public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException { 
          jg.writeString(""); 
      
    });
  }
}

3.配置如下

?
1
2
3
4
5
6
7
8
9
10
<bean id="jacksonMapper" class="com.tyky.eduplat.reslib.infrastructure.MyJsonMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg value="yyyy-MM-dd HH:mm:ss"/>
</bean>
</property>
</bean>
<bean id="jacksonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider">
<constructor-arg ref="jacksonMapper" />
</bean>

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/wangyun522/article/details/78762184

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
主站蜘蛛池模板: 午夜爽爽爽 | 亚洲欧美日韩一区二区 | 中文免费字幕 | av免费网| 亚洲成人一区二区三区 | 日韩欧美精品一区 | 日韩有码视频在线 | 亚洲精品一 | 午夜影院网站 | 97色综合 | 免费看国产一级片 | 久久久91视频 | 免费看国产黄色 | 中国一级黄色毛片视频 | 久久国产乱 | 日韩精品一区二区三区在线观看 | 欧美一区亚洲二区 | 亚洲欧美一级久久精品国产特黄 | 欧美一区二区 | 久久精品色欧美aⅴ一区二区 | 在线观看黄色 | 成年人免费在线观看视频网站 | 欧美久久精品 | 在线看片日韩 | 都市激情av | 日韩中文一区二区三区 | 国产免费天天看高清影视在线 | 日本一区二区电影 | 一区二区不卡视频 | 91精品区 | av在线干 | 久久久成人精品 | 韩日在线| 色视频在线免费观看 | 亚洲欧美自拍视频 | 网站毛片 | 午夜精品福利在线观看 | 亚洲国产精品99久久久久久久久 | 日日夜夜精品免费视频 | 亚洲国产精品一区二区久久 | 无码日韩精品一区二区免费 |