首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JSON 字串與物件互轉:主流庫用法總結

     編輯:Java 綜合教學

主流 JSON 庫對比

庫Maven 坐標特點適用場景
Jacksoncom.fasterxml.jackson.core:jackson-databind效能最強、功能最全、Spring Boot 預設企業級應用、高效能序列化
Gsoncom.google.code.gson:gsonAPI 簡潔、對 Kotlin 友善、Google 維護Android、輕量專案
Fastjsoncom.alibaba:fastjson2國產、極速、功能豐富(v2 重寫修復安全問題)國內高併發系統、相容舊版遷移
JSON-lib (舊)net.sf.json-lib:json-lib早期常用,已停止維護僅維護舊專案

核心 API 對照

Jackson (推薦)

ObjectMapper mapper = new ObjectMapper();

// 物件 -> JSON 字串
String json = mapper.writeValueAsString(user);

// JSON 字串 -> 物件
User user = mapper.readValue(json, User.class);

// JSON 字串 -> 泛型集合
List<User> list = mapper.readValue(json, new TypeReference<List<User>>() {});

// JSON 節點樹模型
JsonNode node = mapper.readTree(json);
String name = node.get("name").asText();

Gson

Gson gson = new Gson();

// 物件 -> JSON
String json = gson.toJson(user);

// JSON -> 物件
User user = gson.fromJson(json, User.class);

// 泛型集合
Type listType = new TypeToken<List<User>>(){}.getType();
List<User> list = gson.fromJson(json, listType);

Fastjson2

// 物件 -> JSON
String json = JSON.toJSONString(user);

// JSON -> 物件
User user = JSON.parseObject(json, User.class);

// JSON -> 集合
List<User> list = JSON.parseArray(json, User.class);

// JSONObject/JSONArray 兼容舊 API
JSONObject obj = JSON.parseObject(json);
String name = obj.getString("name");

常見進階配置

需求JacksonGsonFastjson2
忽略 Null 欄位@JsonInclude(Include.NON_NULL)gsonBuilder.serializeNulls() (預設不序列化 null)SerializerFeature.WriteNulls (預設不寫)
日期格式化@JsonFormat(pattern="yyyy-MM-dd")gsonBuilder.setDateFormat()JSON.toJSONString(obj, "yyyy-MM-dd")
欄位重命名@JsonProperty("user_name")@SerializedName("user_name")@JSONField(name="user_name")
忽略未知欄位@JsonIgnoreProperties(ignoreUnknown=true)預設忽略預設忽略
循環引用處理@JsonManagedReference/@JsonBackReference@Expose + 自訂策略SerializerFeature.DisableCircularReferenceDetect

舊版 JSON-lib 遷移提醒

原文提到的 JSONObject.fromObject()、JSONArray.fromObject() 屬於 JSON-lib (已停維)。新專案請直接使用上述三大主流庫,避免安全漏洞與相容性問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved