2012-04-25 164 views
22

我想下面的JSON字符串轉換爲Java對象:如何將下面的json字符串轉換爲java對象?

String jsonString = "{ 
"libraryname":"My Library", 
"mymusic":[{"Artist Name":"Aaron","Song Name":"Beautiful"}, 
{"Artist Name":"Britney","Song Name":"Oops I did It Again"}, 
{"Artist Name":"Britney","Song Name":"Stronger"}]}" 

我的目標是很容易地訪問它像:

(e.g. MyJsonObject myobj = new MyJsonObject(jsonString) 
myobj.myrows[0].id would give me the ID, myobj.libraryname gives me "My Library"). 

我聽說傑克遜的,但我不確定如何使用它來適應json字符串,因爲它涉及到「mymusic」列表,所以它不僅僅是鍵值對。我如何用傑克遜來實現這個目標,或者如果傑克遜不是最好的,那麼我可以用更簡單的方法來實現這個目標嗎?

+0

的[?轉換一個JSON字符串在Java對象]可能重複(http://stackoverflow.com/questions/1395551/convert-a-json-string-to-object-in -java) – bummi 2015-02-10 23:07:13

回答

60

嘗試JSON-LIB-2.3-jdk15.jar 下載沒有必要去與GSON此;傑克遜可以做的是純地圖/列表:

ObjectMapper mapper = new ObjectMapper(); 
Map<String,Object> map = mapper.readValue(json, Map.class); 

還是比較方便的JSON樹:

JsonNode rootNode = mapper.readTree(json); 

順便說一句,有沒有理由,你爲什麼不能真正創建Java類和做(IMO )更方便:

public class Library { 
    @JsonProperty("libraryname") 
    public String name; 

    @JsonProperty("mymusic") 
    public List<Song> songs; 
} 
public class Song { 
    @JsonProperty("Artist Name") public String artistName; 
    @JsonProperty("Song Name") public String songName; 
} 

Library lib = mapper.readValue(jsonString, Library.class); 
+0

我從你的代碼中得到了解決方案。謝謝 – 2013-04-03 07:31:00

+0

我試圖用傑克森發送這種類型的json字符串,但它只返回空值,'[{「id」:62,「name」:「projectname1」,「batchClassId」:1283,「batchClassName」:「sample_batchclass26」 ,「assetCount」:0},{「id」:8,「name」:「projectname_tmp」,「batchClassId」:1283,「batchClassName」:「sample_batchclass26」,「assetCount」:0}] – 2013-07-19 05:41:39

+0

這是一個JSON數組,所以它必須綁定到Java'Collection'(如'List')或數組(可以使用類型'Object [] .class')。或者僅僅是'java.lang.Object'(將是'List'類型)。它會工作得很好。 – StaxMan 2013-07-19 20:21:19

0

GSON也不錯吧:http://code.google.com/p/google-gson/

「 GSON是可以用來將Java對象轉換成他們的JSON表示創建一個Java庫,它也可以用來將JSON字符串轉換爲相應的Java。 。對象GSON可以用任意的Java對象,包括你沒有的源代碼已經存在的對象的工作 「

檢查API的例子:https://sites.google.com/site/gson/gson-user-guide#TOC-Overview 更多的例子:http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

4

退房谷歌的GSON:http://code.google.com/p/google-gson/

從他們的網站:

Gson gson = new Gson(); // Or use new GsonBuilder().create(); 
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2 

你只需要作出的MyType類(改名,當然)在JSON字符串的所有字段。當你在做數組時,它可能會變得更加複雜,如果你想手動完成所有的解析(也很容易),請檢查http://www.json.org/並下載Json解析器對象的Java源代碼。

+0

,就像一個魅力 – 2018-02-07 23:37:24

相關問題