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

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

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

服務器之家 - 編程語言 - Java教程 - ObjectMapper 如何忽略字段大小寫

ObjectMapper 如何忽略字段大小寫

2021-09-18 11:04程序邊緣 Java教程

這篇文章主要介紹了使用ObjectMapper實現(xiàn)忽略字段大小寫操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

ObjectMapper 忽略字段大小寫

核心代碼:

  1. ObjectMapper mapper = new ObjectMapper();
  2. mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  3. mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

例子:

  1. import com.fasterxml.jackson.databind.DeserializationFeature;
  2. import com.fasterxml.jackson.databind.JsonMappingException;
  3. import com.fasterxml.jackson.databind.MapperFeature;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. public class Test{
  6. public static void main(String[] args) {
  7. try {
  8. A a = new A();
  9. a.lastname = "jack";
  10. ObjectMapper mapper = new ObjectMapper();
  11. mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  12. mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
  13. A2 convertValue = new A2();
  14. mapper.updateValue(convertValue, a);
  15. System.out.println(convertValue);
  16. } catch (JsonMappingException e) {
  17. e.printStackTrace();
  18. }
  19. }
  20.  
  21. public static class A{
  22. String lastname;
  23. public String getLastname() {
  24. return lastname;
  25. }
  26.  
  27. public void setLastname(String lastname) {
  28. this.lastname = lastname;
  29. }
  30. }
  31.  
  32. public static class A2{
  33. String lastName;
  34.  
  35. public String getLastName() {
  36. return lastName;
  37. }
  38.  
  39. public void setLastName(String lastName) {
  40. this.lastName = lastName;
  41. }
  42.  
  43. @Override
  44. public String toString() {
  45. return "A2 [lastName=" + lastName + "]";
  46. }
  47. }
  48. }

ObjectMapper 的一些坑

相信做過Java 開發(fā)對這個類應該不陌生,沒錯,這個類是jackson提供的,主要是用來把對象轉(zhuǎn)換成為一個json字符串返回到前端,

現(xiàn)在大部分數(shù)據(jù)交換都是以json來傳輸?shù)?所以這個很重要,那你到底又對這個類有著有多少了解呢,下面我說一下我遇到的一些坑

首先,先把我要說的幾個坑需要設置的屬性貼出來先

  1. ObjectMapper objectMapper = new ObjectMapper();
  2.  
  3. //序列化的時候序列對象的所有屬性
  4. objectMapper.setSerializationInclusion(Include.ALWAYS);
  5.  
  6. //反序列化的時候如果多了其他屬性,不拋出異常
  7. objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  8.  
  9. //如果是空對象的時候,不拋異常
  10. objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  11.  
  12. //取消時間的轉(zhuǎn)化格式,默認是時間戳,可以取消,同時需要設置要表現(xiàn)的時間格式
  13. objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
  14. objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))

簡單說一下這個類的基本用法,以下采用代碼塊加截圖的形式來說明和部分文字件數(shù)

  1. package com.shiro.test;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import com.fasterxml.jackson.annotation.JsonInclude.Include;
  5. import com.fasterxml.jackson.databind.DeserializationFeature;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.databind.SerializationFeature;
  8. public class Main2 {
  9. public static void main(String[] args) throws Exception{
  10. ObjectMapper objectMapper = new ObjectMapper();
  11. //序列化的時候序列對象的所有屬性
  12. objectMapper.setSerializationInclusion(Include.ALWAYS);
  13. //取消時間的轉(zhuǎn)化格式,默認是時間戳,可以取消,同時需要設置要表現(xiàn)的時間格式
  14. objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
  15. objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  16.  
  17. Person person = new Person(1, "zxc", new Date());
  18. //這是最簡單的一個例子,把一個對象轉(zhuǎn)換為json字符串
  19. String personJson = objectMapper.writeValueAsString(person);
  20. System.out.println(personJson);
  21.  
  22. //默認為true,會顯示時間戳
  23. objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
  24. personJson = objectMapper.writeValueAsString(person);
  25. System.out.println(personJson);
  26. }
  27. }

輸出的信息如下

ObjectMapper 如何忽略字段大小寫

objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)的作用

  1. package com.shiro.test;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import com.fasterxml.jackson.annotation.JsonInclude.Include;
  5. import com.fasterxml.jackson.databind.DeserializationFeature;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.databind.SerializationFeature;
  8. public class Main2 {
  9. public static void main(String[] args) throws Exception{
  10. ObjectMapper objectMapper = new ObjectMapper();
  11. //序列化的時候序列對象的所有屬性
  12. objectMapper.setSerializationInclusion(Include.ALWAYS);
  13. //如果是空對象的時候,不拋異常,也就是對應的屬性沒有get方法
  14. objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  15.  
  16. Person person = new Person(1, "zxc", new Date());
  17.  
  18. String personJson = objectMapper.writeValueAsString(person);
  19. System.out.println(personJson);
  20.  
  21. //默認是true,即會拋異常
  22. objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);
  23. personJson = objectMapper.writeValueAsString(person);
  24. System.out.println(personJson);
  25. }
  26. }

對應的person類此時為

  1. package com.shiro.test;
  2. import java.util.Date;
  3. public class Person {
  4. private Integer id;
  5. private String name;
  6. private Date birthDate;
  7. // public Integer getId() {
  8. // return id;
  9. // }
  10. // public void setId(Integer id) {
  11. // this.id = id;
  12. // }
  13. // public String getName() {
  14. // return name;
  15. // }
  16. // public void setName(String name) {
  17. // this.name = name;
  18. // }
  19. // public Date getBirthDate() {
  20. // return birthDate;
  21. // }
  22. // public void setBirthDate(Date birthDate) {
  23. // this.birthDate = birthDate;
  24. // }
  25. @Override
  26. public String toString() {
  27. return "Person [id=" + id + ", name=" + name + ", birthDate=" + birthDate + "]";
  28. }
  29. public Person(Integer id, String name, Date birthDate) {
  30. super();
  31. this.id = id;
  32. this.name = name;
  33. this.birthDate = birthDate;
  34. }
  35. public Person() {
  36. // TODO Auto-generated constructor stub
  37. }
  38. }

結果如下

ObjectMapper 如何忽略字段大小寫

  1. package com.shiro.test;
  2. import com.fasterxml.jackson.annotation.JsonInclude.Include;
  3. import com.fasterxml.jackson.databind.DeserializationFeature;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. public class Main2 {
  6. public static void main(String[] args) throws Exception{
  7. ObjectMapper objectMapper = new ObjectMapper();
  8. //序列化的時候序列對象的所有屬性
  9. objectMapper.setSerializationInclusion(Include.ALWAYS);
  10. //反序列化的時候如果多了其他屬性,不拋出異常
  11. objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  12.  
  13. // Person person = new Person(1, "zxc", new Date());
  14.  
  15. // String personJson = objectMapper.writeValueAsString(person);
  16. // System.out.println(personJson);
  17.  
  18. //注意,age屬性是不存在在person對象中的
  19. String personStr = "{\"id\":1,\"name\":\"zxc\",\"age\":\"zxc\"}";
  20.  
  21. Person person = objectMapper.readValue(personStr, Person.class);
  22. System.out.println(person);
  23.  
  24. //默認為true
  25. objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
  26. person = objectMapper.readValue(personStr, Person.class);
  27. System.out.println(person);
  28. }
  29. }

執(zhí)行后的結果如下

ObjectMapper 如何忽略字段大小寫

這些便是這幾個屬性的作用所以,由于第一個比較簡單我就這樣說一下吧

Include.ALWAYS 是序列化對像所有屬性

Include.NON_NULL 只有不為null的字段才被序列化

Include.NON_EMPTY 如果為null或者 空字符串和空集合都不會被序列化

然后再說一下如何把一個對象集合轉(zhuǎn)換為一個 Java里面的數(shù)組

  1. package com.shiro.test;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.List;
  5. import com.fasterxml.jackson.annotation.JsonInclude.Include;
  6. import com.fasterxml.jackson.core.type.TypeReference;
  7. import com.fasterxml.jackson.databind.JavaType;
  8. import com.fasterxml.jackson.databind.ObjectMapper;
  9. public class Main2 {
  10. public static void main(String[] args) throws Exception{
  11. ObjectMapper objectMapper = new ObjectMapper();
  12. //序列化的時候序列對象的所有屬性
  13. objectMapper.setSerializationInclusion(Include.NON_DEFAULT);
  14.  
  15. Person person1 = new Person(1, "zxc", new Date());
  16. Person person2 = new Person(2, "ldh", new Date());
  17.  
  18. List<Person> persons = new ArrayList<>();
  19. persons.add(person1);
  20. persons.add(person2);
  21.  
  22. //先轉(zhuǎn)換為json字符串
  23. String personStr = objectMapper.writeValueAsString(persons);
  24.  
  25. //反序列化為List<user> 集合,1需要通過 TypeReference 來具體傳遞值
  26. List<Person> persons2 = objectMapper.readValue(personStr, new TypeReference<List<Person>>() {});
  27.  
  28. for(Person person : persons2) {
  29. System.out.println(person);
  30. }
  31.  
  32. //2,通過 JavaType 來進行處理返回
  33. JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Person.class);
  34. List<Person> persons3 = objectMapper.readValue(personStr, javaType);
  35.  
  36. for(Person person : persons3) {
  37. System.out.println(person);
  38. }
  39. }
  40. }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持我們。

原文鏈接:https://blog.csdn.net/weixin_42713970/article/details/88061100

延伸 · 閱讀

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

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

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

    程序猿DD9332021-10-08
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

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

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

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

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

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

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

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

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

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

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

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

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

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

    阿杜7472021-02-04
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

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

    Java教程網(wǎng)2942020-09-17
主站蜘蛛池模板: 国产精品一区二区免费 | 亚洲午夜一区 | 国产精品亚洲第一区在线暖暖韩国 | 亚洲免费中文字幕 | 亚洲激情一区二区三区 | 日韩视频精品在线观看 | 国产黄免费 | 日韩在线一区二区三区 | 一级视频免费观看 | 无码日韩精品一区二区免费 | 成人刺激视频在线 | 俺去俺来也www色官网cms | 99久久婷婷国产精品综合 | 狠狠综合| 欧美成年黄网站色视频 | 国产高清免费视频 | 国产精品久久久久久模特 | 99精品视频在线观看 | ririsao久久精品一区 | 亚洲视频在线播放 | 91精品国产综合久久久久 | 免费裸体视频网站 | 国产毛片在线看 | 91精品国产福利在线观看 | 亚洲一区中文字幕 | 国内自拍视频网 | 日韩精品极品视频在线观看免费 | 亚洲精品欧美一区二区三区 | av在线综合网 | 日日夜夜国产 | 中文字幕在线影院 | 91国内| 午夜a区 | 无码一区二区三区视频 | 国产成人精品一区二区在线 | 免费观看www7722午夜电影 | 亚洲精品一区中文字幕乱码 | 91精品国产综合久久久久久 | 国产真实精品久久二三区 | 色伊人| 久久成人精品视频 |