4

gson を介して Json 文字列を解析しています。これは Json 文字列です

[
{
    "ID": 1,
    "Name": "Australia",
    "Active": true
},
{
    "ID": 3,
    "Name": "Kiev",
    "Active": true
},
{
    "ID": 4,
    "Name": "South Africa",
    "Active": true
},
{
    "ID": 5,
    "Name": "Stockholm",
    "Active": true
},
{
    "ID": 6,
    "Name": "Paris",
    "Active": true
},
{
    "ID": 7,
    "Name": "Moscow",
    "Active": true
},
{
    "ID": 8,
    "Name": "New York City",
    "Active": true
},
{
    "ID": 9,
    "Name": "Germany",
    "Active": true
},
{
    "ID": 10,
    "Name": "Copenhagen",
    "Active": true
},
{
    "ID": 11,
    "Name": "Amsterdam",
    "Active": true
}
]

これが使用されるオブジェクトです

public class MyBranch extends Entity {

public MyBranch () {
    super();
}

public MyBranch (int id, String name, String isActive) {
    super();
    _ID = id;
    _Name = name;
    _Active = isActive;
}

@Column(name = "id", primaryKey = true)
public int _ID;
public String _Name;
public String _Active;

}
Gson gson = new Gson();
Type t = new TypeToken<List<MyBranch >>() {}.getType();     
List<MyBranch > list = (List<MyBranch >) gson.fromJson(json, t);

構築されたリストには10​​個の object がありますが、問題はオブジェクトのデータメンバーがすべてnullであることです。これの何が問題なのかわかりません。Entity は OrmDroid の Entity クラスです。

4

2 に答える 2

6

クラスのフィールドの名前があなたのMyBranchフィールドと一致しないため、注釈jsonを使用する必要があります。SerializedName

import com.google.gson.annotations.SerializedName;

public class MyBranch extends Entity {
    public MyBranch () {
        super();
    }

    public MyBranch (int id, String name, String isActive) {
        super();
        _ID = id;
        _Name = name;
        _Active = isActive;
    }

    @Column(name = "id", primaryKey = true)
    @SerializedName("ID")
    public int _ID;

    @SerializedName("Name")
    public String _Name;

    @SerializedName("Active")
    public String _Active;
}

編集:フィールドのSerializedName名前を変更するだけで、注釈 の使用を避けることもできます。MyBranch

import com.google.gson.annotations.SerializedName;

public class MyBranch extends Entity {
    public MyBranch () {
        super();
    }

    public MyBranch (int id, String name, String isActive) {
        super();
        ID = id;
        Name = name;
        Active = isActive;
    }

    @Column(name = "id", primaryKey = true)
    public int ID;
    public String Name;
    public String Active;
}
于 2013-03-08T10:49:38.420 に答える
-1

List使用する代わりにArrayList?

Gson gson = new Gson();
Type t = new TypeToken<ArrayList<MyBranch >>() {}.getType();     
ArrayList<MyBranch > list = (ArrayList<MyBranch >) gson.fromJson(json, t);
于 2013-03-08T10:48:17.990 に答える