2

サーバーから受信した JSON の解析に問題があります。私が持っているモデルでは:

@JsonField(name = "skills")
private ArrayList<Skill> skills;

フィールドがあります:

@JsonObject
public class Skill {
    @JsonField
    private int skillID;
    @JsonField
    private String name;
    ...
}

ArrayList は適切な数のオブジェクトを取得しますが、それらの内部のすべてのフィールドは null です。

JSON は次のようになります。

{
   "skills":[
      {
         "skill":{
            "skillID":"1",
            "name":"foo"
         }
      },
      {
         "skill":{
            "skillID":"2",
            "name":"bar"
         }
      }
   ]
}

問題は、追加のクラス (Skill) をネストせずに Skill オブジェクトを ArrayList に抽出する方法です。

@JsonObject アノテーションに「スキル」名を設定する可能性はありますか?

4

2 に答える 2

0

非常にシンプルで高速なこのコードを試してください

  ArrayList<Skill> skillsArrayList = new ArrayList<>();

次のコードを使用してJsonを解析します

 try {
        skillsArrayList=new ArrayList<>();
        JSONObject object=new JSONObject(jsonString);

        JSONArray array=object.getJSONArray("skills");
        for (int i=0;i<array.length();i++){
            JSONObject jsonObject=array.getJSONObject(i).getJSONObject("skill");

            skillsArrayList.add(new Skill(jsonObject.getInt("skillID"),jsonObject.getString("name")));
        }

        Log.e("skillItemCount",skillsArrayList.size()+"");

    } catch (JSONException e) {
        e.printStackTrace();
    }

これが私のカスタムクラスです

 class Skill{
    int id;
    String name;

    public Skill(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
于 2016-05-21T11:37:08.080 に答える