2013-08-01 41 views
0

有一個模型類:如何一個JSONObject轉換爲對象包含java.util.Set中的場

public class Book { 
    private String id; 
    private Set<String> authors = new HashSet<String>(); //Set field 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public Set<String> getAuthors() { 
     return authors; 
    } 
    public void setAuthors(Set<String> authors) { 
     this.authors = authors; 
    } 
    @Override 
    public String toString() { 
     return "Book [authors=" + authors + ", id=" + id + "]"; 
    } 
} 

我執行以下功能:

public void test3() { 
    Book book = new Book(); 
    book.setId("T2"); 
    Set<String> authors = new HashSet<String>(); 
    authors.add("Tom"); 
    authors.add("King"); 
    book.setAuthors(authors); 

    JSONObject jsonObject = JSONObject.fromObject(book); 
    System.out.println(jsonObject); 

    Book b = (Book) JSONObject.toBean(jsonObject, Book.class); 
    System.out.println(b.toString()); 

} 

它不能轉換的JSONObject到書對象,並會有一個例外。 如何將jsonObject轉換爲Book對象成功?

+0

什麼是例外?你的json是什麼樣的。 –

+0

異常是:net.sf.json.JSONException:在設置屬性=作者類型接口java.util.List時出錯 \t at net.sf.json.JSONObject.toBean(JSONObject.java:468) \t at net。 sf.json.JSONObject.toBean(JSONObject.java:242) \t at com.augmentum.ot.Test.test3(Test.java:54) \t at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)... –

+0

嘗試使用[GSon](http://www.json.org/)進行轉換 – swapy

回答

1

嘗試Gson

Book b = new Gson().fromJson(jsonObject, Book.class); 
+0

感謝您的回覆,我解決了這個問題。起初我使用json-lib-2.1.jar,然後用json-lib-2.4-jdk15.jar替換它。 –

相關問題