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

詳解JSON與?Java對(duì)象之間的轉(zhuǎn)化

 更新時(shí)間:2023年03月28日 09:53:18   作者:god23bin  
在現(xiàn)在的日常開(kāi)發(fā)中,不管前端還是后端,JSON?格式的數(shù)據(jù)是用得比較多的,甚至可以說(shuō)無(wú)處不在。所以本文主要來(lái)講講JSON?格式的數(shù)據(jù)與?Java?對(duì)象之間的轉(zhuǎn)化吧

前言

在現(xiàn)在的日常開(kāi)發(fā)中,不管前端還是后端,JSON 格式的數(shù)據(jù)是用得比較多的,甚至可以說(shuō)無(wú)處不在。

接觸最多的就是 POST 請(qǐng)求中傳遞的數(shù)據(jù)一般以 JSON 的格式放在請(qǐng)求體中,而且服務(wù)端各種 API 返回的數(shù)據(jù),在響應(yīng)體中也基本都是以 JSON 格式的數(shù)據(jù)進(jìn)行返回的,這也是 RESTful 風(fēng)格的體現(xiàn)之一。

當(dāng)然,不止是請(qǐng)求與響應(yīng)的過(guò)程中使用到 JSON,在某些業(yè)務(wù)場(chǎng)景下也是需要用到 JSON 的,特別是 JSON 與 Java 對(duì)象之間的轉(zhuǎn)化

所以,對(duì)于 Java 開(kāi)發(fā)的我們來(lái)說(shuō),JSON 格式的數(shù)據(jù)與 Java 對(duì)象之間的轉(zhuǎn)化是必會(huì)的。

轉(zhuǎn)化的工具

主流的轉(zhuǎn)化工具有如下幾種,一般項(xiàng)目中建議只選其中一種,目前好評(píng)最多的感覺(jué)就是 Jackson 了。

  • Jackson
  • FastJson
  • Gson
  • Hutool

準(zhǔn)備的 JSON 字符串和 List

為了方便演示,這里給出一個(gè) JSON 字符串:

String jsonStr = "{\"name\" : \"GTA5\", \"price\" : 54.5}";

這里給出一個(gè) List<Game>

Game game1 = Game.builder().name("NBA2K23").price(new BigDecimal("198.0")).build();
Game game2 = Game.builder().name("Sim City4").price(new BigDecimal("22.5")).build();
List<Game> gameList = new ArrayList<>();
gameList.add(game1);
gameList.add(game2);

Jackson

我們需要借助 Jackson 提供的 ObjectMapper 對(duì)象來(lái)完成轉(zhuǎn)化:

ObjectMapper objectMapper = new ObjectMapper();

將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象:readValue

使用 readValue 方法,第一個(gè)參數(shù)是 JSON 字符串,第二個(gè)參數(shù)是轉(zhuǎn)化的目標(biāo)類(lèi)的類(lèi)型。

// 將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象
Game game = objectMapper.readValue(jsonStr, Game.class);

將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串:writeValueAsString

使用 writeValueAsString 方法,接受一個(gè) Java 對(duì)象,返回一個(gè) JSON 字符串。

// 將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串
String gameJson = objectMapper.writeValueAsString(game);

將 List 轉(zhuǎn)成 JSON 字符串:writeValueAsString

同樣使用 writeValueAsString 方法。

// 將 List<Game> 轉(zhuǎn)成 JSON 字符串
String gameListJson = objectMapper.writeValueAsString(gameList);

將 JSON 字符串 轉(zhuǎn)成 List:readValue

使用 readValue 方法,第一個(gè)參數(shù)是 JSON 字符串,第二個(gè)參數(shù)是轉(zhuǎn)化的目標(biāo) TypeReference(類(lèi)型參照)對(duì)象,這里指定其泛型為 List<Game>。

// 將 JSON 字符串 轉(zhuǎn)成 List<Game>
List<Game> gameListFromJson = objectMapper.readValue(gameListJson, new TypeReference<List<Game>>() {});

總結(jié)

從 JSON 到 Java 對(duì)象,使用 readValue 方法。

從 Java 對(duì)象到 JSON,使用 writeValueAsString 方法。

FastJson

我們需要借助 FastJson 提供的 JSONObject 對(duì)象來(lái)完成轉(zhuǎn)化。

將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象:parseObject

使用 parseObject 方法,將 JSON 字符串解析(轉(zhuǎn)化)成 Java 對(duì)象,第一個(gè)參數(shù)是 JSON 字符串,第二個(gè)參數(shù)是目標(biāo)類(lèi)的類(lèi)型。

// 將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象
Game game = JSONObject.parseObject(jsonStr, Game.class);

將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串:toJSONString

使用 toJSONString 方法,將 Java 對(duì)象直接轉(zhuǎn)成 JSON 字符串,接受一個(gè) Java 對(duì)象,返回對(duì)應(yīng)的 JSON 字符串。

// 將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串
String gameJson = JSONObject.toJSONString(game);

將 List 轉(zhuǎn)成 JSON 字符串:toJSONString

同理,可以直接丟一個(gè) List 對(duì)象給 toJSONString 方法,把 List 轉(zhuǎn)成 JSON 字符串。

// 將 List<Game> 轉(zhuǎn)成 JSON 字符串
String gameListJson = JSONObject.toJSONString(gameList);

將 JSON 字符串 轉(zhuǎn)成 List:parseArray

使用 parseArray 方法,將 JSON 字符串解析成 List。2.0 版本需要調(diào)用 toJavaList 方法,得到最后的 List

// 將 JSON 字符串 轉(zhuǎn)成 List<Game>
// fastjson 1.2.x 版本:List<Game> gameListFromJson = JSONObject.parseArray(gameListJson, Game.class);
List<Game> gameListFromJson = JSONArray.parseArray(gameListJson).toJavaList(Game.class);

總結(jié)

JSON 轉(zhuǎn)成 Java Bean 使用 parseObject 方法,轉(zhuǎn)成 List 使用 parseArray 方法。

任意對(duì)象轉(zhuǎn)成 JSON,則使用 toJSONString 方法。

Gson

我們需要借助 Gson 對(duì)象來(lái)完成轉(zhuǎn)化:

Gson gson = new Gson();

將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象:fromJson

使用 fromJson 方法,兩個(gè)參數(shù)的定義也是和上面兩個(gè)一樣的。

// 將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象
Game game = gson.fromJson(jsonStr, Game.class);

將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串:toJson

使用 toJson 方法,接受一個(gè) Java 對(duì)象,然后返回對(duì)應(yīng)的 JSON 字符串。

// 將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串
String gameJson = gson.toJson(game);

將 List 轉(zhuǎn)成 JSON 字符串:toJson

List 也是同理,使用 toJson 方法。

// 將 List&lt;Game&gt; 轉(zhuǎn)成 JSON 字符串
String gameListJson = gson.toJson(gameList);

將 JSON 字符串 轉(zhuǎn)成 List:fromJson

這里和 Jackson 的也是類(lèi)似,第二個(gè)參數(shù)使用 TypeToken 對(duì)象指定轉(zhuǎn)化的目標(biāo)類(lèi)型為 List<Game>。

// 將 JSON 字符串 轉(zhuǎn)成 List&lt;Game&gt;
List&lt;Game&gt; gameListFromJson = gson.fromJson(gameListJson, new TypeToken&lt;List&lt;Game&gt;&gt;() {}.getType());

總結(jié)

從 JSON 到 Java 對(duì)象,使用 fromJson 方法。

從 Java 對(duì)象到 JSON,使用 toJson 方法。

Hutool

我們需要借助 Hutool 提供的 JSONUtil 對(duì)象來(lái)完成轉(zhuǎn)化。

將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象:toBean

使用 toBean 方法,還是同樣的,接受的兩個(gè)參數(shù),一個(gè)字符串,一個(gè)目標(biāo)類(lèi)的類(lèi)型。

// 將 JSON 字符串 轉(zhuǎn)成 Java 對(duì)象
Game game = JSONUtil.toBean(jsonStr, Game.class);

將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串:toJsonStr

使用 toJsonStr 方法,接受一個(gè) Java 對(duì)象,返回一個(gè) JSON 字符串。

// 將 Java 對(duì)象轉(zhuǎn)成 JSON 字符串
String gameJson = JSONUtil.toJsonStr(game);

將 List 轉(zhuǎn)成 JSON 字符串:toJsonStr

同理,也是 toJsonStr 方法。

// 將 List&lt;Game&gt; 轉(zhuǎn)成 JSON 字符串
String gameListJson = JSONUtil.toJsonStr(gameList);

將 JSON 字符串 轉(zhuǎn)成 List:toList

使用 toList 方法,和 toBean 方法接受的參數(shù)一樣。

// 將 JSON 字符串 轉(zhuǎn)成 List&lt;Game&gt;
List&lt;Game&gt; gameListFromJson = JSONUtil.toList(gameListJson, Game.class);

總結(jié)

JSON 轉(zhuǎn)成 Java Bean 使用 toBean 方法,轉(zhuǎn)成 List 使用 toList 方法。

任意對(duì)象轉(zhuǎn)成 JSON,則使用 toJsonStr 方法。

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

相關(guān)文章

  • Mybatis映射文件規(guī)則實(shí)例詳解

    Mybatis映射文件規(guī)則實(shí)例詳解

    在映射文件當(dāng)中,mapper元素是映射文件的根元素,其他的標(biāo)簽都是它的子元素,下面這篇文章主要給大家介紹了關(guān)于Mybatis映射文件規(guī)則的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Java多線程父線程向子線程傳值問(wèn)題及解決

    Java多線程父線程向子線程傳值問(wèn)題及解決

    文章總結(jié)了5種解決父子之間數(shù)據(jù)傳遞困擾的解決方案,包括ThreadLocal+TaskDecorator、UserUtils、CustomTaskDecorator、ExecutorConfig、RequestContextHolder+TaskDecorator、MDC+TaskDecorator和InheritableThreadLocal
    2025-02-02
  • Java之SpringBoot-Thymeleaf詳情

    Java之SpringBoot-Thymeleaf詳情

    聊Thymeleaf,需要知道為什么到了SpringBoot中就不用JSP了?這跟SpringBoot打包方式有點(diǎn)關(guān)系,SpringBoot項(xiàng)目打包是jar包,下面文章小編就對(duì)此做一個(gè)詳細(xì)介紹,需要的朋友可以參考一下
    2021-09-09
  • Java中double保留兩位小數(shù)的多種方法

    Java中double保留兩位小數(shù)的多種方法

    這篇文章主要給大家介紹了關(guān)于Java中double保留兩位小數(shù)的多種方法,對(duì)于double數(shù)據(jù)類(lèi)型進(jìn)行計(jì)算發(fā)生的精度丟失的情況,可以按照自己的需求選擇任意方式,需要的朋友可以參考下
    2023-07-07
  • SpringBoot配置Https入門(mén)實(shí)踐

    SpringBoot配置Https入門(mén)實(shí)踐

    本文主要介紹了SpringBoot配置Https入門(mén)實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • idea中springboot整合mybatis找不到mapper接口的原因分析

    idea中springboot整合mybatis找不到mapper接口的原因分析

    這篇文章主要介紹了idea中springboot整合mybatis找不到mapper接口的原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • springmvc如何使用POJO作為參數(shù)

    springmvc如何使用POJO作為參數(shù)

    這篇文章主要介紹了springmvc如何使用POJO作為參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Filter在springboot中的使用方法詳解

    Filter在springboot中的使用方法詳解

    這篇文章主要介紹了Filter在springboot中的使用方法詳解,filter(過(guò)濾器)作用于在intreceptor(攔截器)之前,不像intreceptor一樣依賴(lài)于springmvc框架,只需要依賴(lài)于serverlet,需要的朋友可以參考下
    2023-08-08
  • 淺談java 中equals和==的區(qū)別

    淺談java 中equals和==的區(qū)別

    這篇文章主要介紹了java 中equals和==的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 解析Java異常的棧軌跡及其相關(guān)方法

    解析Java異常的棧軌跡及其相關(guān)方法

    這篇文章主要介紹了解析Java異常的棧軌跡及其相關(guān)方法,包括棧軌跡的打印和fillInStackTrace方法等,需要的朋友可以參考下
    2015-11-11

最新評(píng)論

博野县| 石城县| 永平县| 安平县| 全椒县| 鹤壁市| 于田县| 承德市| 靖宇县| 和林格尔县| 娄底市| 延川县| 清水县| 华蓥市| 应城市| 新巴尔虎右旗| 孙吴县| 余姚市| 东兰县| 璧山县| 中牟县| 古浪县| 佳木斯市| 含山县| 图木舒克市| 榆树市| 织金县| 隆尧县| 新泰市| 介休市| 武汉市| 金塔县| 衢州市| 慈利县| 鄢陵县| 玉屏| 滕州市| 涿鹿县| 湾仔区| 赤峰市| 安平县|