[英]How to marshal/unmarshal JSON in a Java application?
假設我有以下 JSON 字符串:
{ "1": { "id": "12", "name": "xyz" }, "2": { "id": "12", "name": "xyz" }, "3": { "id": "12", "name": "xyz" }, "4": { "id": "12", "name": "xyz" }, "5": { "id": "12", "name": "xyz" }, "6": { "id": "12", "name": "xyz" } }
如何從 Java 應用程序中創建這個 JSON 結構? 是否有任何好的庫可以幫助編組和解組 Java 的 JSON?
有幾個流行的庫:這里已經提到的 jackson、gson、org.json 等。
還有一些不處理序列化但可用於解析的便利庫,例如https://github.com/jayway/JsonPath 。 它可能(沒有自己測試過)可能會慢一點但更方便。
如果您不每秒處理大量 json 文檔或非常大/復雜的文檔(或兩者),您可能可以選擇任何對您來說看起來簡單的庫。 如果您處理我提到的情況,則需要在 google 中閱讀一些性能測試結果或運行自己的(如果可能)。
使用jackson-core 之類的庫,您可以使用最少的代碼輕松高效地將 json 轉換為對象表示,反之亦然。
例如,您顯示的 JSON 將是Map<String,SomeObject>
,其中SomeObject
將表示如下:
public class SomeObject {
private String id;
private String name;
}
地圖將按如下方式填充,假設構造函數采用id
和name
作為地圖條目的值。
Map<String, SomeObject> map = new LinkedHashMap<>();
map.put( "1", new SomeObject( "12", "xyz" ) );
map.put( "2", new SomeObject( "12", "xyz" ) );
map.put( "3", new SomeObject( "12", "xyz" ) );
map.put( "4", new SomeObject( "12", "xyz" ) );
map.put( "5", new SomeObject( "12", "xyz" ) );
map.put( "6", new SomeObject( "12", "xyz" ) );
現在從 Java 獲取 JSON 字符串:
String output = new ObjectMapper().writeValueAsString( map );
如果您有 JSON 字符串並且想要獲取對象表示:
ObjectMapper mapper = new ObjectMapper();
Map<String, SomeObject> map = new LinkedHashMap<>();
map = mapper.readValue( json, new TypeReference<Map<String,SomeObject>>(){} );
顯然,這是一個基本的概述。 它會是明智的閱讀文檔的傑克遜API托管在GitHub上了這里。
我會推薦另一個庫: fastjson 。 與傑克遜相比,它更簡單、更快、更小。
Map<String, Object> map = JSON.parseObject(json, Map.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.