2012-09-24 20 views
2

當給定JSON數據時,是否有工具可以在Java中生成JSON對象?這個工具會假設其中一個「流行」的JSON庫,或者讓你指定要使用的JSON庫。 例如與有效的JSON數據將JSON數據轉換爲一組Java對象

{ 
    "age":100, 
    "name":"mkyong.com", 
    "messages":["msg 1","msg 2","msg 3"] 
} 

使用「org.json.simple.*」工具會產生這樣的

JSONObject obj = new JSONObject(); 
obj.put("name", "mkyong.com"); 
obj.put("age", new Integer(100)); 

JSONArray list = new JSONArray(); 
list.add("msg 1"); 
list.add("msg 2"); 
list.add("msg 3"); 

obj.put("messages", list); 
+0

大約有一百種不同的工具可以轉換成JSON。我不會直截了當地回想哪些與Java協同工作,但Google很快就會告訴你,或者你可以參考[JSON網站](http://www.json.org/)。 –

回答

5

與傑克遜,這是因爲使用ObjectMapper,並創建一個POJO來表示你的JSON對象一樣簡單:

public class Person { 
    private int age; 
    private String name; 
    private List<String> messages; 

    // getters/setters 
} 

然後:

String json = "{\"age\":100,\"name\":\"mkyong.com\",\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"]}"; 
ObjectMapper mapper = new ObjectMapper(); 
Person person = mapper.readValue(json.getBytes(), Person.class); 
System.out.println(person.getMessages()); // [msg 1, msg 2, msg 3] 

要反過來做,使用writeValue

Person person = new Person(); 
person.setAge(100); 
// ... 
mapper.writeValue(..., person); 
0

FlexJson也是一個很好的庫,類似於jackso ñ,我已經嘗試過。

還有其他選項,如Gson,FastJsonjson-lib,你可以嘗試。

請分享你喜歡哪一個,爲什麼。

+1

我和傑克遜一起去了 - 它使用起來又快又方便另一個有趣的鏈接 - http://stackoverflow.com/questions/338586/a-better-java-json-library – Abhi