最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java ObjectMapper使用詳解

 更新時(shí)間:2024年07月04日 10:48:38   作者:西飄客  
ObjectMapper類是Jackson的主要類,它可以幫助我們快速的進(jìn)行各個(gè)類型和Json類型的相互轉(zhuǎn)換,本文給大家介紹Java ObjectMapper的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧

簡(jiǎn)介

ObjectMapper類(com.fasterxml.jackson.databind.ObjectMapper)是Jackson的主要類,它可以幫助我們快速的進(jìn)行各個(gè)類型和Json類型的相互轉(zhuǎn)換。

使用

1、引入Jackson的依賴

<!-- 根據(jù)自己需要引入相關(guān)版本依賴。 -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.10</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.10</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.10</version>
</dependency>

 2、ObjectMapper的常用配置

private static final ObjectMapper mapper;
public static ObjectMapper getObjectMapper(){
    return this.mapper;
}
static{
    //創(chuàng)建ObjectMapper對(duì)象
    mapper = new ObjectMapper()
    //configure方法 配置一些需要的參數(shù)
    // 轉(zhuǎn)換為格式化的json 顯示出來(lái)的格式美化
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
   //序列化的時(shí)候序列對(duì)象的那些屬性  
   //JsonInclude.Include.NON_DEFAULT 屬性為默認(rèn)值不序列化 
   //JsonInclude.Include.ALWAYS      所有屬性
   //JsonInclude.Include.NON_EMPTY   屬性為 空(“”) 或者為 NULL 都不序列化 
   //JsonInclude.Include.NON_NULL    屬性為NULL 不序列化
   mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);  
    //反序列化時(shí),遇到未知屬性會(huì)不會(huì)報(bào)錯(cuò) 
    //true - 遇到?jīng)]有的屬性就報(bào)錯(cuò) false - 沒(méi)有的屬性不會(huì)管,不會(huì)報(bào)錯(cuò)
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    //如果是空對(duì)象的時(shí)候,不拋異常  
    mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);  
    // 忽略 transient 修飾的屬性
    mapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);
    //修改序列化后日期格式
    mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);  
    mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
   //處理不同的時(shí)區(qū)偏移格式
   mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
   mapper.registerModule(new JavaTimeModule());
}

3、ObjectMapper的常用方法

a.json字符串轉(zhuǎn)對(duì)象

ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Hyl\", \"age\":20}";
//將字符串轉(zhuǎn)換為對(duì)象
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
//將對(duì)象轉(zhuǎn)換為json字符串
jsonString = mapper.writeValueAsString(student);
System.out.println(jsonString);
結(jié)果:
Student [ name: Hyl, age: 20 ]
{
  "name" : "Hyl",
  "age" : 20
}

b. 數(shù)組和對(duì)象之間轉(zhuǎn)換

//對(duì)象轉(zhuǎn)為byte數(shù)組
byte[] byteArr = mapper.writeValueAsBytes(student);
System.out.println(byteArr);
//byte數(shù)組轉(zhuǎn)為對(duì)象
Student student= mapper.readValue(byteArr, Student.class);
System.out.println(student);
結(jié)果:
[B@3327bd23
Student [ name: Hyl, age: 20 ]

c. 集合和json字符串之間轉(zhuǎn)換

List<Student> studentList= new ArrayList<>();
studentList.add(new Student("hyl1" ,20 , new Date()));
studentList.add(new Student("hyl2" ,21 , new Date()));
studentList.add(new Student("hyl3" ,22 , new Date()));
studentList.add(new Student("hyl4" ,23 , new Date()));
String jsonStr = mapper.writeValueAsString(studentList);
System.out.println(jsonStr);
List<Student> studentList2 = mapper.readValue(jsonStr, List.class);
System.out.println("字符串轉(zhuǎn)集合:" + studentList2 );
結(jié)果:
[ {
  "name" : "hyl1",
  "age" : 20,
  "sendTime" : 1525164212803
}, {
  "name" : "hyl2",
  "age" : 21,
  "sendTime" : 1525164212803
}, {
  "name" : "hyl3",
  "age" : 22,
  "sendTime" : 1525164212803
}, {
  "name" : "hyl4",
  "age" : 23,
  "sendTime" : 1525164212803
} ]
[{name=hyl1, age=20, sendTime=1525164212803}, {name=hyl2, age=21, sendTime=1525164212803}, {name=hyl3, age=22, sendTime=1525164212803}, {name=hyl4, age=23, sendTime=1525164212803}]

 d. map和json字符串之間轉(zhuǎn)換

Map<String, Object> testMap = new HashMap<>();
testMap.put("name", "22");
testMap.put("age", 20);
testMap.put("date", new Date());
testMap.put("student", new Student("hyl", 20, new Date()));
String jsonStr = mapper.writeValueAsString(testMap);
System.out.println(jsonStr);
Map<String, Object> testMapDes = mapper.readValue(jsonStr, Map.class);
System.out.println(testMapDes);
結(jié)果:
{
  "date" : 1525164212803,
  "name" : "22",
  "student" : {
    "name" : "hyl",
    "age" : 20,
    "sendTime" : 1525164212803,
    "intList" : null
  },
  "age" : 20
}
{date=1525164212803, name=22, student={name=hyl, age=20, sendTime=1525164212803, intList=null}, age=20}

e. 日期轉(zhuǎn)json字符串

// 修改時(shí)間格式
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
Student student = new Student ("hyl",21, new Date());
student.setIntList(Arrays.asList(1, 2, 3));
String jsonStr = mapper.writeValueAsString(student);
System.out.println(jsonStr);
結(jié)果:
{
  "name" : "hyl",
  "age" : 21,
  "sendTime" : "2020-07-23 13:14:36",
  "intList" : [ 1, 2, 3 ]
}

js中將字符串轉(zhuǎn)換為json對(duì)象

var data = "{\"name\":\"Hyl\", \"age\":20}";
var student = eval(data);
console.info(student.name);
console.info(student.age);
結(jié)果:
Hyl
20

到此這篇關(guān)于Java ObjectMapper詳解的文章就介紹到這了,更多相關(guān)Java ObjectMapper內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談spring使用策略模式實(shí)現(xiàn)多種場(chǎng)景登錄方式

    淺談spring使用策略模式實(shí)現(xiàn)多種場(chǎng)景登錄方式

    本文主要介紹了spring使用策略模式實(shí)現(xiàn)多種場(chǎng)景登錄方式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java中StringBuilder類的介紹與常用方法

    Java中StringBuilder類的介紹與常用方法

    StringBuilder是一個(gè)可變的字符串的操作類,我們可以把它看成是一個(gè)對(duì)象容器,下面這篇文章主要給大家介紹了關(guān)于Java中StringBuilder類的介紹與常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Java中的五種引用類型詳解

    Java中的五種引用類型詳解

    Java中的五種引用類型:強(qiáng)引用、軟引用、弱引用、虛引用和Final引用,分別用于管理對(duì)象的生命周期,幫助垃圾回收器更高效地回收不再使用的對(duì)象
    2024-12-12
  • Java GUI進(jìn)階之流式布局管理器FlowLayout專項(xiàng)精講

    Java GUI進(jìn)階之流式布局管理器FlowLayout專項(xiàng)精講

    FlowLayout-流式布局管理器,按水平方向依次排列放置組件,排滿一行,換下一行繼續(xù)排列。排列方向(左到右 或 右到左)取決于容器的componentOrientation屬性
    2022-04-04
  • MyBatis-Plus中更新操作的兩種實(shí)現(xiàn)

    MyBatis-Plus中更新操作的兩種實(shí)現(xiàn)

    本文主要介紹了MyBatis-Plus中更新操作的兩種實(shí)現(xiàn),主要是通過(guò)id更新和條件更新,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 解讀查看zookeeper事務(wù)日志的正確姿勢(shì)

    解讀查看zookeeper事務(wù)日志的正確姿勢(shì)

    這篇文章主要介紹了解讀查看zookeeper事務(wù)日志的正確姿勢(shì)。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解Java中的線程模型與線程調(diào)度

    詳解Java中的線程模型與線程調(diào)度

    這篇文章主要介紹了詳解Java中的線程模型與線程調(diào)度的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列示例詳解

    Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列示例詳解

    隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),它遵循先進(jìn)先出或后近后出的原則,隊(duì)列允許在一端插入元素,另一端刪除元素,這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • Java日期與時(shí)間類原理解析

    Java日期與時(shí)間類原理解析

    這篇文章主要介紹了Java日期與時(shí)間類原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java中關(guān)于字符串的編碼方式

    Java中關(guān)于字符串的編碼方式

    這篇文章主要介紹了Java中關(guān)于字符串的編碼方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論

神农架林区| 尉氏县| 韶山市| 临猗县| 娄底市| 岚皋县| 丹东市| 鄂托克前旗| 都兰县| 阿城市| 石楼县| 双鸭山市| 进贤县| 宁津县| 洪泽县| 扬中市| 岢岚县| 同心县| 华坪县| 巨野县| 龙泉市| 盘山县| 正宁县| 荆州市| 阜新市| 大足县| 西乌珠穆沁旗| 凌云县| 新干县| 酒泉市| 上饶县| 灵寿县| 黄平县| 岢岚县| 松溪县| 镇赉县| 儋州市| 隆林| 资兴市| 崇礼县| 洞头县|