2011-08-01 57 views
3

我想將JSON字符串轉換爲簡單的java對象,但它返回null。以下是課程詳情。使用Gson將JSON轉換爲Java對象

JSON字符串:

{"menu": 
    {"id": "file", 
    "value": "File", 
    } 
    } 

這是可解析類:

public static void main(String[] args) { 
try { 
    Reader r = new 
     InputStreamReader(TestGson.class.getResourceAsStream("testdata.json"), "UTF-8"); 
    String s = Helper.readAll(r); 
    Gson gson = new Gson(); 
    Menu m = gson.fromJson(s, Menu.class); 
    System.out.println(m.getId()); 
    System.out.println(m.getValue()); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
} 

下面是個模型類:

public class Menu { 

    String id; 
    String value; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public String getValue() { 
     return value; 
    } 
    public void setValue(String value) { 
     this.value = value; 
    } 

    public String toString() { 
     return String.format("id: %s, value: %d", id, value); 
    } 

} 

每次我得到空。誰能幫幫我嗎?

+0

嘗試使默認counstructor確定,告訴它是否工作 – PedroAGSantos

+0

檢查此尋求幫助。 http://stackoverflow.com/questions/6079505/converting-json-string-to-java-object –

回答

7

您的JSON是一個字段爲menu的對象。

如果添加相同的在Java它的工作原理:

class MenuWrapper { 
    Menu menu; 
    public Menu getMenu() { return menu; } 
    public void setMenu(Menu m) { menu = m; } 
} 

和示例:

public static void main(String[] args) { 
    String json = "{\"menu\": {\"id\": \"file\", \"value\": \"File\"} }"; 

    Gson gson = new Gson(); 
    MenuWrapper m = gson.fromJson(json, MenuWrapper.class); 
    System.out.println(m.getMenu().getId()); 
    System.out.println(m.getMenu().getValue()); 

} 

它會打印:

file 
File 

而且你的JSON:{"menu": {"id": "file", "value": "File", } }有一個錯誤,它有一個額外的逗號。它應該是:

{"menu": {"id": "file", "value": "File" } } 
+0

謝謝,喬納斯。但爲什麼添加Menu Wrraper類?...你有任何文件,以便我可以瞭解更多...如果你有請與我分享....謝謝 – Avnish

+0

因爲我是新來的。我想知道是否有任何在java或android中的內置GSON將JSON轉換爲java或反轉-versa ...因爲我只知道JACKSON和GSON ...請幫助我謝謝... – Avnish

1

我所發現的有用與GSON是創建類的實例,調用它toJson()和比較我試圖解析字符串生成的字符串。