簡體   English   中英

如何在 Java 應用程序中編組/解組 JSON?

[英]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;
}

地圖將按如下方式填充,假設構造函數采用idname作為地圖條目的值。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM