2012-08-14 40 views
1

我想JSONObject的字符串转换成一些具体的课程。GSON不投JSON字符串到

MyClass mc= new Gson().fromJson(jo.toString(),MyClass.class); 

在此步骤之后,mc的所有值为空。

值jo.toString()的:

{ 
    "__type":"MyClass:#MyProject.Model", 
    "ID":1, 
    "Comment":"First Record", 
    "SubClassID":534, 
    "Active":true, 
    "Date":"\/Date(1323087840000+0200)\/" 
} 

MyClass.java已属性ID,注释...

由于此致...

MyClass.Java:

public class MyClass extends ABase 
{ 
    private String _Comment; 
    public String getComment(){ 
     return _Comment; 
    } 
    public void setComment(String value){ 
     _Comment = value; 
    } 
    private Integer _ID; 
    public Integer getID(){ 
     return _ID; 
    } 
    public void setID(Integer value){ 
     _ID = value; 
    } 
    private java.util.Date _Date; 
    public java.util.Date getDate(){ 
     return _Date; 
    } 
    public void setDate(java.util.Date value){ 
     _Date = value; 
    } 
} 
+0

如果我们看不到你的类的定义,我们不能发现问题。您使用的gson方法可以,但无法帮助您进一步。 – cosmincalistru 2012-08-14 14:47:19

+0

我已经添加了MyClass.java代码。当我使用Log.d(“Object”,jo.toString());我可以看到所有的值。但是,当我使用mc.getID()时,它返回空 – essbek 2012-08-14 15:00:31

+0

很可能它只是一个命名不匹配。是否有任何具体的理由为什么'_Comment'应该从'Comment'中读取,而不是从'+ __ comment__ +'中读取?创建你的课堂的一个对象,并保存它看到更多。如果需要,使用命名策略。 – maaartinus 2012-08-14 16:09:25

回答

2

的问题是JSON元素名称不符合Java字段的名称,并没有明确的替代名称Gson提供了映射配置。

可能的解决方案:

  1. 更改Java字段名完全匹配的JSON元素名称。当然这并不总是可行的,例如,当JSON元素名称包含对Java字段名称无效的字符或格式时。

  2. 更改JSON元素名称完全匹配的Java字段名。当然这并不总是可行的,例如,当JSON来自第三方时。

  3. Provide Gson with name-mappings,使用@SerializedName注释或FieldNamingPolicy