1

JSONObject 文字列を特定のクラスに変換しようとしています。

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

このステップの後、mc のすべての値は null になります。

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. JSON 要素名と正確に一致するように Java フィールド名を変更します。もちろん、これが常に可能であるとは限りません。たとえば、JSON 要素名に Java フィールド名として無効な文字または形式が含まれている場合などです。

  2. JSON 要素名を Java フィールド名と正確に一致するように変更します。もちろん、これが常に可能であるとは限りません。たとえば、JSON がサード パーティからのものである場合などです。

  3. @SerializedNameアノテーションまたはFieldNamingPolicyを使用して、Gson に name-mapping を提供します。

于 2012-08-14T16:14:11.650 に答える