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

Springboot中Jackson用法詳解

 更新時間:2025年01月02日 15:55:59   作者:考慮考慮  
Springboot自帶默認json解析Jackson,可以在不引入其他json解析包情況下,解析json字段,下面我們就來聊聊Springboot中Jackson的用法吧

前言

Springboot自帶默認json解析Jackson,可以在不引入其他json解析包情況下,解析json字段

Jackson用法

本文使用的是jdk23Springboot3.4.x版本,如果是在非Springboot項目,就動態(tài)添加包

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.18.2</version>
</dependency>

將對象解析為json字符串

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {
        User user = new User(1L, "aa");
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String json = objectMapper.writeValueAsString(user);
            System.out.println(json);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

輸出結果為

將json解析為對象

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {
        User user = new User(1L, "aa");
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String json = objectMapper.writeValueAsString(user);
            System.out.println(json);
            User user1 = objectMapper.readValue(json, User.class);
            System.out.println(user1);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

將json文件轉換為json

user.json放置于resources文件夾下

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {
        User user = new User(1L, "aa");
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String json = objectMapper.writeValueAsString(user);
            System.out.println(json);
            File file = new File(Objects.requireNonNull(User.class.getClassLoader().getResource("user.json")).getFile());

            User user1 = objectMapper.readValue(file, User.class);
            System.out.println(user1);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

輸出結果為

將url轉換成json

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;
import java.net.URI;
import java.net.URL;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {
        User user = new User(1L, "aa");
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String json = objectMapper.writeValueAsString(user);
            System.out.println(json);
            URL url = URI.create("http://192.168.69.183:16023/user.json").toURL();

            User user2 = objectMapper.readValue(url, User.class);
            System.out.println(user2);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

備注: 搭建個nginx服務器環(huán)境,將user.json放入靜態(tài)資源映射下

jdk20版本以下的URL需要這么寫

URL url = new URL("http://192.168.69.183:16023/user.json");

這種jdk20以上過期了,轉換成

URL url = URI.create("http://192.168.69.183:16023/user.json").toURL();

字節(jié)轉換成json

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;
import java.nio.charset.StandardCharsets;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {

        ObjectMapper objectMapper= new ObjectMapper();
       String json = """
               {"id":1,"name":"aa"}
               """;
        try {

            User user2 = objectMapper.readValue(json.getBytes(StandardCharsets.UTF_8), User.class);
            System.out.println(user2);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

輸出結果為

jdk17版本以下字符串需要這些寫

String json = "{\"id\":1,\"name\":\"aa\"}";

字符串轉義

json數組轉對象數組

package cn.com.ut.cloud.demoobjectmapepr.model;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {

        ObjectMapper objectMapper = new ObjectMapper();
        List<User> userList = List.of(new User(1L, "aa"),
                new User(2L, "bb"));
        try {
            String json = objectMapper.writeValueAsString(userList);
            System.out.println(json);
            List<User> list = objectMapper.readValue(json, new TypeReference<>() {
            });
            System.out.println(list);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

輸出結果為

image.png

json轉Map

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;
import java.util.Map;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {

        ObjectMapper objectMapper = new ObjectMapper();
        User user = new User(1L, "aa");
        try {
            String json = objectMapper.writeValueAsString(user);
            System.out.println(json);
            Map<String, Object> map = objectMapper.readValue(json,
                    new TypeReference<>() {
                    });
            System.out.println(map);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

輸出結果為

JsonNode使用

JsonNode可以將json中的字段取出來

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.IOException;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {

        ObjectMapper objectMapper = new ObjectMapper();
        User user = new User(1L, "aa");
        try {
            String json = objectMapper.writeValueAsString(user);
            System.out.println(json);
            JsonNode jsonNode = objectMapper.readTree(json);

            System.out.println(jsonNode.get("id").asText());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

輸出結果為

String id = jsonNode.get("id").asText(); 
double id = jsonNode.get("id").asDouble();
int id = jsonNode.get("id").asInt(); 
long id = jsonNode.get("id").asLong();

動態(tài)添加json字段

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Long id;

    private String name;

    public static void main(String[] args) {

        ObjectMapper objectMapper = new ObjectMapper();

        ObjectNode objectNode = objectMapper.createObjectNode();
        objectNode.put("id", "1");
        objectNode.put("name", "1");
        objectNode.put("age", "1");
        System.out.println(objectNode.toString());
    }
}

輸出結果為

總結

可以使用Springboot自身攜帶的Jackson包操作json,當然,現(xiàn)在還有很多優(yōu)秀的json解析包,根據自身擅長的做技術選型

以上就是Springboot中Jackson用法詳解的詳細內容,更多關于Springboot Jackson用法的資料請關注腳本之家其它相關文章!

相關文章

  • Mybatis?ResultMap和分頁操作示例詳解

    Mybatis?ResultMap和分頁操作示例詳解

    這篇文章主要為大家介紹了Mybatis?ResultMap和分頁操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • java數字圖像處理基礎使用imageio寫圖像文件示例

    java數字圖像處理基礎使用imageio寫圖像文件示例

    這篇文章主要介紹了Java 2D的圖像處理API,文章討論和提及的API都是基于JDK6的,Java中寫一個圖像文件使用ImageIO對象即可,下面看代碼吧
    2014-01-01
  • Java正則判斷日期格式是否正確的方法示例

    Java正則判斷日期格式是否正確的方法示例

    這篇文章主要介紹了Java正則判斷日期格式是否正確的方法,結合實例形式分析了Java針對日期字符串正則判斷的相關操作技巧,需要的朋友可以參考下
    2017-03-03
  • SpringBoot登錄認證前后端實現(xiàn)方案:SpringBoot + Mybatis + JWT(圖文實例)

    SpringBoot登錄認證前后端實現(xiàn)方案:SpringBoot + Mybatis +&

    本文展示如何在Spring生態(tài)系統(tǒng)中整合IOC/DI、MyBatis、MD5加密、Session/Cookie管理、JWT令牌和攔截器,以實現(xiàn)一個企業(yè)級的認證方案,前端使用HTML/CSS/JavaScript/JQuery,后端使用SpringBoot+MyBatis+JWT,通過統(tǒng)一返回結果封裝和圖形驗證碼,提高了API的可維護性和安全性
    2025-10-10
  • IntelliJ Idea 2020.1 正式發(fā)布,官方支持中文(必看)

    IntelliJ Idea 2020.1 正式發(fā)布,官方支持中文(必看)

    這篇文章主要介紹了IntelliJ Idea 2020.1 正式發(fā)布,官方支持中文了,本文通過截圖的形式給大家展示,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • ChatGpt都使用的Java BPE分詞算法不要了解一下

    ChatGpt都使用的Java BPE分詞算法不要了解一下

    Byte Pair Encoding(BPE)是一種文本壓縮算法,它通常用于自然語言處理領域中的分詞、詞匯表構建等任務,本文將對 BPE 算法進行全面、詳細的講解,并提供 Java 相關的代碼示例,希望對大家有所幫助
    2023-06-06
  • Spring注解實現(xiàn)循環(huán)重試功能(適用場景分析)

    Spring注解實現(xiàn)循環(huán)重試功能(適用場景分析)

    這篇文章主要介紹了Spring注解實現(xiàn)循環(huán)重試功能,本篇主要簡單介紹了Springboot中的Retryable的使用,主要的適用場景和注意事項,當需要重試的時候還是很有用的,需要的朋友可以參考下
    2023-04-04
  • Kotlin中l(wèi)et、run、with、apply及also的用法和差別

    Kotlin中l(wèi)et、run、with、apply及also的用法和差別

    作用域函數是Kotlin比較重要的一個特性,分為5種let、run、with、apply及also,這五個函數的工作方式非常相似,但是我們需要了解這5種函數的差異,以便在不同的場景更好的利用它,這篇文章主要介紹了Kotlin中l(wèi)et、run、with、apply及also的差別,需要的朋友可以參考下
    2023-11-11
  • java實現(xiàn)漢字轉拼音

    java實現(xiàn)漢字轉拼音

    這篇文章主要介紹了java實現(xiàn)漢字轉拼音的功能,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java中Collection遍歷的幾種方式

    Java中Collection遍歷的幾種方式

    本文主要介紹了Java中Collection遍歷的幾種方式,包括迭代器遍歷、增強for循環(huán)和forEach遍歷,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-02-02

最新評論

增城市| 石林| 米易县| 精河县| 谷城县| 南投市| 东丽区| 南昌县| 驻马店市| 汝城县| 津南区| 新沂市| 锡林郭勒盟| 庐江县| 芦溪县| 卓尼县| 界首市| 民县| 内黄县| 桂阳县| 昌江| 漯河市| 三原县| 濮阳市| 昭苏县| 海晏县| 济阳县| 库尔勒市| 南宁市| 舒城县| 葫芦岛市| 焦作市| 黎城县| 日照市| 石棉县| 河池市| 遂溪县| 四会市| 迭部县| 湘潭市| 玉屏|