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

java中常用的json,jsonarray,map數(shù)據(jù)結構與對象互轉詳解

 更新時間:2025年12月08日 09:33:17   作者:codingPower  
這篇文章主要為大家詳細介紹了java中常用的json,jsonarray,map數(shù)據(jù)結構與對象互轉的相關方法,主要是FastJSON和Jackson兩種常用庫,有需要的小伙伴可以了解下

前言

創(chuàng)建一個對象

public class SbfpDto{
private int code;
private String message;
}

在Java開發(fā)中,對象與JSON、Map等數(shù)據(jù)結構的互轉是常見需求,下面涵蓋FastJSONJackson兩種常用庫的使用方法。

一、JSON字符串轉對象

1.FastJSON庫的正確用法

// 正確JSON字符串(注意英文引號)
String jsonStr = "{\"code\":2,\"message\":\"需要轉換的對象\"}";

// 方法1:直接解析(推薦)
SbfpDto sbfp1 = JSON.parseObject(jsonStr, SbfpDto.class);

// 方法2:通過JSONObject解析
SbfpDto sbfp2 = JSONObject.parseObject(jsonStr, SbfpDto.class);

//將JSON字符串解析為JSONObject對象
JSONObject js=JSONObject.parseObject(jsonStr);

錯誤修正:示例JSON.parseObject(JSON.toJSONString(jsonStr), SbfpDto .class)中 JSON.toJSONString(jsonStr) 會導致雙重轉義(如"{\"code\":2}"變成"\"{\\\"code\\\":2}\""),應直接解析原始字符串,即JSON.toJSONString 不應該對String類型進行轉換。

2.Jackson庫的用法

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature;

// 創(chuàng)建ObjectMapper并配置忽略未知字段,設置未知列跳過
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

// 解析JSON
SbfpDto sbfp = mapper.readValue(jsonStr, SbfpDto.class);

關鍵點

  • FAIL_ON_UNKNOWN_PROPERTIES 配置可避免JSON中有多余字段時拋異常。
  • 必須處理IOException(需try-catch或聲明拋出)。

其他:BeanUtil.mapToBean();

二、JSON數(shù)組(JsonArray)轉對象列表

FastJSON優(yōu)化版

String jsonStr = "{\"sbfpList\":[{\"code\":2,\"message\":\"對象1\"},{\"code\":3,\"message\":\"對象2\"}]}";

// 一步到位解析(推薦)
List<SbfpDto> sbfps = JSON.parseObject(jsonStr)
                           .getJSONArray("sbfpList")
                           .toJavaList(SbfpDto.class);
//詳細步驟   
JSONObject sfbpJson= JSON.parseObject(jsonStr);
JSONArray sbfpArray = sfbpJson.getJSONArray("sbfpList");
List<SbfpDto> sbfps= JSONArray.parseArray(sbfpArray.toJSONString(), SbfpDto.class);    

//2 直接轉
String jsonStr2 = "[{\"code\":2,\"message\":\"對象1\"},{\"code\":3,\"message\":\"對象2\"}]";
List<SbfpDto> sbfps=JSONObject.parseArray(jsonstr2,SbfpDto.class);     

List<SbfpDto> sbfps=JSON.parseArray(jsonstr2,SbfpDto.class);                        

優(yōu)化說明:無需手動轉換JSONArray到字符串再解析,直接使用toJavaList()方法更簡潔高效。

Jackson版

// 解析整個JSON
JsonNode root = mapper.readTree(jsonStr);
ArrayNode sbfpArray = (ArrayNode) root.get("sbfpList");

// 轉換為List
List<SbfpDto> sbfps = mapper.convertValue(sbfpArray, new TypeReference<List<SbfpDto>>() {});

三、對象轉Map

1. FastJSON實現(xiàn)

SbfpDto dto = new SbfpDto(2, "需要轉換的對象");

// 對象轉JSON字符串,再轉Map
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(dto), new TypeReference<Map<String, Object>>() {});
//或者
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(jsonStr),Map.class);

//將java對象序列化成JSON字符串
String jsonStr=JSON.toJSONString(dto);

注意:直接使用Map.class可能導致泛型類型丟失,推薦用TypeReference保留類型信息。

2. Jackson實現(xiàn)(更高效)

// 直接轉換對象為Map
Map<String, Object> map = mapper.convertValue(dto, new TypeReference<Map<String, Object>>() {});

其他:BeanUtil.beanTomap();

四、最佳實踐建議

庫的選擇

  • FastJSON:API簡潔,適合快速開發(fā),但需注意線程安全問題(JSON類部分方法非線程安全)。
  • Jackson:性能優(yōu)異,社區(qū)活躍,推薦用于復雜項目。
  • BeanUtil:hutool中的該類也可以進行map和bean之間的轉換。

異常處理

try {
    SbfpDto dto = mapper.readValue(jsonStr, SbfpDto.class);
} catch (IOException e) {
    // 處理解析失敗(如日志記錄、拋自定義異常等)
}

日期格式等高級配置

// Jackson配置日期格式
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

避免中文引號:確保JSON字符串使用英文雙引號 ",而非 “”。

通過上述方法,您可以安全高效地實現(xiàn)對象與JSON、Map之間的轉換。根據(jù)項目需求選擇合適的庫,并注意配置和異常處理,可顯著提升代碼健壯性。

到此這篇關于java中常用的json,jsonarray,map數(shù)據(jù)結構與對象互轉詳解的文章就介紹到這了,更多相關java常用對象互轉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java基礎之集合框架詳解

    Java基礎之集合框架詳解

    這篇文章主要介紹了Java基礎之集合框架詳解,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • idea 如何查找類中的某個方法

    idea 如何查找類中的某個方法

    這篇文章主要介紹了idea 如何查找類中的某個方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 詳解Java中CAS機制的原理與優(yōu)缺點

    詳解Java中CAS機制的原理與優(yōu)缺點

    CAS?英文就是?compare?and?swap?,也就是比較并交換,這篇文章主要來和大家介紹一下Java中CAS機制的原理與優(yōu)缺點,感興趣的小伙伴可以了解一下
    2023-06-06
  • 在netty中使用native傳輸協(xié)議的方法

    在netty中使用native傳輸協(xié)議的方法

    這篇文章主要介紹了在netty中使用native傳輸協(xié)議,這里我們只以Kqueue為例介紹了netty中native傳輸協(xié)議的使用,需要的朋友可以參考下
    2022-05-05
  • spring boot starter actuator(健康監(jiān)控)配置和使用教程

    spring boot starter actuator(健康監(jiān)控)配置和使用教程

    這篇文章主要介紹了spring-boot-starter-actuator(健康監(jiān)控)配置和使用教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 詳解Java Web項目啟動執(zhí)行順序

    詳解Java Web項目啟動執(zhí)行順序

    這篇文章主要介紹了詳解Java Web項目啟動執(zhí)行順序,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 通過實例深入學習Java的Struts框架中的OGNL表達式使用

    通過實例深入學習Java的Struts框架中的OGNL表達式使用

    這篇文章主要通過實例介紹了Java的Strus框架中的OGNL表達式使用,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-11-11
  • Spring Security整合Oauth2實現(xiàn)流程詳解

    Spring Security整合Oauth2實現(xiàn)流程詳解

    這篇文章主要介紹了Spring Security整合Oauth2實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Java解析Excel內(nèi)容的方法

    Java解析Excel內(nèi)容的方法

    這篇文章主要介紹了Java解析Excel內(nèi)容的方法,實例分析了java解析excel文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 用Java實現(xiàn)聊天程序

    用Java實現(xiàn)聊天程序

    這篇文章主要為大家詳細介紹了用Java實現(xiàn)聊天程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論

新竹市| 文化| 宁明县| 天等县| 鹤峰县| 贵南县| 五河县| 得荣县| 遵义市| 石渠县| 水富县| 华蓥市| 宜宾县| 社旗县| 永昌县| 句容市| 青田县| 东阳市| 荆门市| 太仆寺旗| 鄂伦春自治旗| 名山县| 安远县| 西丰县| 大姚县| 安阳县| 平定县| 台北县| 星子县| 水城县| 潜山县| 永靖县| 贵州省| 龙井市| 红河县| 车致| 栾川县| 崇信县| 舞钢市| 沧州市| 黄山市|