我在解析从服务器收到的JSON时遇到问题。在我的模型中:
@JsonField(name = "skills")
private ArrayList<Skill> skills;
有字段:
@JsonObject
public class Skill {
@JsonField
private int skillID;
@JsonField
private String name;
...
}
ArrayList获取正确的对象数,但其中的所有字段都为空。
JSON看起来像:
{
"skills":[
{
"skill":{
"skillID":"1",
"name":"foo"
}
},
{
"skill":{
"skillID":"2",
"name":"bar"
}
}
]
}
问题是:如何在不嵌套其他类(技能)的情况下将技能对象提取到ArrayList中?
也许有可能设置&#34;技能&#34; @JsonObject注释上的名称?
答案 0 :(得分:0)
这里我为解析提供了简单的解决方案:
ArrayList<Skill> skills;
try{
JSONObject jobj=new JSONObject(str);
JSONArray jsar=jobj.getJSONArray("skills");
for(int i=0;i<jsar.length();i++){
JSONObject skobj=jsar.getJSONObject(i);
JSONObject sksub=skobj.getJSONObject("skill");
//in skill class objest assign name & Id using obj.getstring("Name");
skills.add(new skill(sksub));
}
}catch(Exception e){
e.printStackTrace()
}
答案 1 :(得分: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;
}
}