Java 中 ObjectMapper用法(一個(gè)簡單 Demo 講清楚)
在 Java 后端開發(fā)中,我們經(jīng)常需要和前端、第三方服務(wù)打交道,而它們最常用的數(shù)據(jù)格式就是JSON
那么問題來了:
Java 對象,如何優(yōu)雅地轉(zhuǎn)換成 JSON?
答案就是:ObjectMapper。
一、ObjectMapper 是什么?
ObjectMapper 是 Jackson 提供的核心類,用來做兩件事:
- Java 對象 → JSON 字符串
- JSON 字符串 → Java 對象
一句話總結(jié):
ObjectMapper = Java 世界和 JSON 世界之間的翻譯官
二、一個(gè)最簡單的使用場景
假設(shè)我們要發(fā)送這樣一段 JSON:
{
"name": "張三",
"age": 18,
"skills": ["Java", "Spring"]
}在 Java 中,數(shù)據(jù)通常是這樣寫的:
Map<String, Object> user = new HashMap<>();
user.put("name", "張三");
user.put("age", 18);
user.put("skills", Arrays.asList("Java", "Spring"));
那如何把它變成 JSON 呢?
三、簡單 Demo:Java 對象轉(zhuǎn) JSON
1?? 示例代碼
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.*;
public class ObjectMapperDemo {
public static void main(String[] args) throws Exception {
// 1. 創(chuàng)建 ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
// 2. 構(gòu)造 Java 對象
Map<String, Object> user = new HashMap<>();
user.put("name", "張三");
user.put("age", 18);
user.put("skills", Arrays.asList("Java", "Spring"));
// 3. Java 對象 → JSON 字符串
String json = objectMapper.writeValueAsString(user);
// 4. 輸出結(jié)果
System.out.println(json);
}
}2?? 運(yùn)行結(jié)果

是不是很簡單?
四、ObjectMapper 到底幫我們做了什么?
這一行代碼是核心:
objectMapper.writeValueAsString(user);
它自動(dòng)幫你完成了:
Map→ JSON 對象List→ JSON 數(shù)組String / int→ JSON 基本類型- 自動(dòng)處理中文(UTF-8)
完全不需要你手寫 JSON 字符串。
五、為什么很多項(xiàng)目把 ObjectMapper 定義成 static?
你經(jīng)常會在項(xiàng)目中看到:
static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
原因有三個(gè):
- ObjectMapper 是線程安全的
- 避免頻繁 new,提高性能
- 方便統(tǒng)一配置
這是業(yè)界的標(biāo)準(zhǔn)用法。
六、JSON 轉(zhuǎn)回 Java 對象
1?? 示例代碼
String json = "{\"name\":\"張三\",\"age\":18}";
ObjectMapper objectMapper = new ObjectMapper();
// JSON → Java Map
Map<String, Object> result =
objectMapper.readValue(json, Map.class);
System.out.println(result.get("name")); // 張三
System.out.println(result.get("age")); // 18
七、如果不用 ObjectMapper 會怎樣?
你只能手動(dòng)拼 JSON:
String json = "{ \"name\": \"" + name + "\", \"age\": " + age + " }";
? 問題很多:
- 容易拼錯(cuò)格式
- 不支持復(fù)雜結(jié)構(gòu)
- 維護(hù)成本極高
?? 實(shí)際項(xiàng)目中強(qiáng)烈不推薦
八、總結(jié)
ObjectMapper 核心要點(diǎn)
| 點(diǎn) | 說明 |
|---|---|
| 是什么 | Java ↔ JSON 轉(zhuǎn)換工具 |
| 用途 | 代替手寫 JSON |
| 學(xué)習(xí)成本 | 極低 |
| 實(shí)用性 | 極高 |
到此這篇關(guān)于Java 中 ObjectMapper用法(一個(gè)簡單 Demo 講清楚)的文章就介紹到這了,更多相關(guān)java objectmapper使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HttpClient的RedirectStrategy重定向處理核心機(jī)制
這篇文章主要為大家介紹了HttpClient的RedirectStrategy重定向處理核心機(jī)制源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
ThreadLocal導(dǎo)致JVM內(nèi)存泄漏原因探究
ThreadLocal是JDK提供的線程本地變量機(jī)制,但若使用不當(dāng)可能導(dǎo)致內(nèi)存泄漏。正確的使用方式是在使用完后及時(shí)remove,或者使用弱引用等手段避免強(qiáng)引用導(dǎo)致的內(nèi)存泄漏。在多線程編程中,合理使用ThreadLocal可以提高并發(fā)性能,但也需要注意其潛在的內(nèi)存泄漏問題2023-04-04
mybatis使用pageHelper插件進(jìn)行查詢分頁
這篇文章主要介紹了mybatis使用pageHelper插件進(jìn)行查詢分頁,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
使用純Java實(shí)現(xiàn)一個(gè)WebSSH項(xiàng)目的示例代碼
這篇文章主要介紹了使用純Java實(shí)現(xiàn)一個(gè)WebSSH項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Java Web程序?qū)崿F(xiàn)返回JSON字符串的方法總結(jié)
Java Web服務(wù)器端只要把Java對象數(shù)據(jù)轉(zhuǎn)成JSON字符串,把JSON字符串以文本的形式通過response輸出即可,2016-05-05
springboot使用AOP+反射實(shí)現(xiàn)Excel數(shù)據(jù)的讀取
本文主要介紹了springboot使用AOP+反射實(shí)現(xiàn)Excel數(shù)據(jù)的讀取,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Spring AOP + Guava RateLimiter實(shí)現(xiàn)優(yōu)雅限流
本文主要介紹了Spring AOP + Guava RateLimiter實(shí)現(xiàn)優(yōu)雅限流,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
使用java實(shí)現(xiàn)Xmodem協(xié)議
這篇文章主要介紹了使用java實(shí)現(xiàn)Xmodem協(xié)議的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12

