2011-08-01 59 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()和比较我试图解析字符串生成的字符串。