1

我正在尝试将 JSonObject 字符串转换为一些特定的类。

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;
    }
}
4

1 回答 1

2

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

可能的解决方案:

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

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

  3. 使用@SerializedName注释或FieldNamingPolicy为 Gson 提供名称映射

于 2012-08-14T16:14:11.650 回答