2016-12-01 113 views
1

我有一個叫MediaList的類,我想用JSON-String的值解析這個類並向後。JSON:Object to JsonString - JsonString to X.class Object

public class KeywordList { 
     private List<Keyword> keywords = new ArrayList<>(); 
} 

而且這裏的JSON字符串:

{ 
    "keywords": [ 
     { 
      "id": 12, 
      "name": "Thesis", 
      "mediaCount": 31 
     }, ... 
    ] 
} 

我使用谷歌的lib GSON,但我只是想,因爲我不使用標準的Java版本與JAX-RS希望第三方工具在我的項目中。

回答

3

不幸的是,你必須使用外部庫引起Java默認情況下不能這樣做。

雖然這可能會改變與Java 9,但從變化看,我還沒有看到在JSON庫中構建的東西。我聽說過,但我沒有看到它裏面。

你可以看到here所有Java的新功能9.

你會發現,你可能需要的庫,帶教程here

沿直到它的存在,我們有驚人的Jackson庫:

1.1將Java對象轉換爲JSON, writeValue(...)

ObjectMapper mapper = new ObjectMapper(); 
Staff obj = new Staff(); 

//Object to JSON in file 
mapper.writeValue(new File("c:\\file.json"), obj); 

//Object to JSON in String 
String jsonInString = mapper.writeValueAsString(obj); 

1.2 JSON轉換到Java對象,readValue(...)

ObjectMapper mapper = new ObjectMapper(); 
String jsonInString = "{'name' : 'mkyong'}"; 

//JSON from file to Object 
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class); 

//JSON from URL to Object 
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class); 

//JSON from String to Object 
Staff obj = mapper.readValue(jsonInString, Staff.class); 

其中Staff是:

import java.math.BigDecimal; import java.util.List; 
public class Staff { 
    private String name; 
    private int age; 
    private String position; 
    private BigDecimal salary; 
    private List<String> skills; 
    //getters and setters 
} 

完全教程here

+1

傑克遜很好。絕對是我的首選JSON庫 –

1

JDK本身不包含JAX-RS標準的實現,因此無論如何您都必須使用第三方庫。