繁体   English   中英

在Android中解析JSON,无法获得价值

[英]Parsing JSON in Android, not getting value

我可以解析我需要的一切,除了field_exercis_arc中target_id
我得到了图片,标题和正文。 不确定如何在field_exercis_arc中获取ID。


JSON

[{
"nid": "26",
"title": "Question test",
"body": "xcvxcv",
"field_exercis_arc": ["25","27"]
}]

编码

String finalJson = buffer.toString();
            JSONArray parentArray = new JSONArray(finalJson);
            List<ExerciseModel> exerciseModelList = new ArrayList<>();

            for(int i=0; i<parentArray.length(); i++){
                JSONObject finalObject = parentArray.getJSONObject(i);

                title_exi = finalObject.getString("title");
                text_exi = finalObject.getString("body");
                //This part is working.
                ExerciseModel exerciseModel = new ExerciseModel();
                exerciseModel.setTitle(finalObject.getString("title"));
                exerciseModel.setNid(finalObject.getInt("nid"));
                exerciseModel.setBody(finalObject.getString("body"));

                //Problem with this part, not getting the target_id's.
                List<ExerciseModel.Exer> exerList = new ArrayList<>();
                for(int j=0; j<finalObject.getJSONArray("field_exercis_arc").length(); j++){
                    ExerciseModel.Exer exercis = new ExerciseModel.Exer();
                    exercis.setTarget_id(finalObject.getJSONArray("field_exercis_arc").getJSONObject(j).getString("target_id"));
                    exerList.add(exercis);
                }
                exerciseModel.setExerList(exerList);
                exerciseModelList.add(exerciseModel);

                mDB.saveRecordEX(exerciseModel);
            }

field_exercis_arc和target_id的字段的模型

private List<Exer> exerList;
public List<Exer> getExerList() {
    return exerList;
}

public void setExerList(List<Exer> exerList) {
    this.exerList = exerList;
}

public static class Exer{
    private String target_id;
    public String getTarget_id() {
        return target_id;
    }
    public void setTarget_id(String target_id) {
        this.target_id = target_id;
    }
}

提前致谢

我建议您使用GSON库从JSON获取结果。 为此,您将需要Java类才能将结果解析为对象。 为此,您可以在此处使用JSON到Java类的转换。

对于您来说,示例类为:

public class Und
{
  private String value;

  public String getValue() { return this.value; }

  public void setValue(String value) { this.value = value; }
}

public class Body
{
  private ArrayList<Und> und;

  public ArrayList<Und> getUnd() { return this.und; }

  public void setUnd(ArrayList<Und> und) { this.und = und; }
}

public class Und2
{
  private String target_id;

  public String getTargetId() { return this.target_id; }

  public void setTargetId(String target_id) { this.target_id = target_id; }
}

public class FieldExercisArc
{
  private ArrayList<Und2> und;

  public ArrayList<Und2> getUnd() { return this.und; }

  public void setUnd(ArrayList<Und2> und) { this.und = und; }
}

public class RootObject
{
  private String vid;

  public String getVid() { return this.vid; }

  public void setVid(String vid) { this.vid = vid; }

  private String uid;

  public String getUid() { return this.uid; }

  public void setUid(String uid) { this.uid = uid; }

  private String title;

  public String getTitle() { return this.title; }

  public void setTitle(String title) { this.title = title; }

  private Body body;

  public Body getBody() { return this.body; }

  public void setBody(Body body) { this.body = body; }

  private FieldExercisArc field_exercis_arc;

  public FieldExercisArc getFieldExercisArc() { return this.field_exercis_arc; }

  public void setFieldExercisArc(FieldExercisArc field_exercis_arc) { this.field_exercis_arc = field_exercis_arc; }

  private String cid;

  public String getCid() { return this.cid; }

  public void setCid(String cid) { this.cid = cid; }

  private String last_comment_timestamp;

  public String getLastCommentTimestamp() { return this.last_comment_timestamp; }

  public void setLastCommentTimestamp(String last_comment_timestamp) { this.last_comment_timestamp = last_comment_timestamp; }
}

您可以将结果转换为RootObject。 福克斯的例子:

 String json = "{\"vid\": \"26\",\"uid\": \"1\",\"title\": \"Question test\",\"body\": {\"und\": [{\"value\": \"xcvxcv\"}]},\"field_exercis_arc\": {\"und\": [{\"target_id\": \"25\"},{\"target_id\":\"27\"}]},\"cid\": \"0\",\"last_comment_timestamp\": \"1472217577\"}";
 RootObject object = new Gson().fromJson(json, RootObject.class);
 System.out.println("Title is: "+object.getTitle() ); 

结果是:

Title is: Question test

之后,您可以使用您的对象从JSON获取任何值。

另外,您应该知道JSON无效。 您在两个不应存在的地方有逗号。 在上面我给你的字符串中,那些是固定的。 您应该使用以下命令检查JSON: JSON格式器

使用以下代码:

exercis.setTarget_id(finalObject.getJSONArray("field_exercis_arc").getString(j));
JsonArray fieldArray=yourJsonObject.getJsonArray("field_exercis_arc");
for(int i=0;i<fieldArray.length;i++){
 fieldArray.getString(i);
}

要解析JSON,您必须这样做。

            String finalJson = buffer.toString();
            JSONArray parentArray = new JSONArray(finalJson);

            for(int i=0; i<parentArray.length(); i++){
                JSONObject finalObject = parentArray.getJSONObject(i);

                String title = finalObject.getString("title");
                String body = finalObject.getString("body");

                JSONArray arr = finalObject.getJSONArray("field_exercis_arc");
                for(int x=0; x < arr.length(); x++){
                    String val = arr.getString(x);
                }
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM