JSONArray用gson解析

时间:2016-01-07 12:01:59

标签: java android gson

它正在工作当我试图通过gson检索jsonobject但是当我使用gson检索jsonArray时它不起作用。如何从下面的jsonArray中恢复数据并通过GSON显示到列表视图。

任何人都可以帮助我。

我的jsonArray

[
 {
    "node_title": "One Day camp",
    "nid": "202605",
    "Icon Image": {
        "fid": "146",
        "uid": "1",
        "filename": "10483937_741467599279220_8365483080196647009_n.jpg",
        "uri": "public://10483937_741467599279220_8365483080196647009_n.jpg",
        "filemime": "image/jpeg",
    }
 },
 { 
    "node_title": "University of Kerala",
    "nid": "202604",
    "Icon Image": {
        "fid": "145",
        "uid": "1",
        "filename": "careerguru.png",
        "uri": "public://careerguru.png",
        "filemime": "image/png",
    }
 }
]

6 个答案:

答案 0 :(得分:1)

我认为问题是,

之后的"filemime": "xxx"

答案 1 :(得分:0)

编辑:我想我误解了你的问题。 venkatKA的回答是正确的。

通常,您将构建一个与您希望接收的json具有相同特征的对象。例如,

public class MyJsonObject {

    private String node_title;
    private String nid;

    private static class IconImage {

        private String fid;
        private String uid;
        private String filename;
        private String uri;
        private String filemime;

    }

}

然后,您将循环遍历JSONArray,将它们与Gson序列化为MyJsonObject的数组。

(至于内部类,我知道Gson可以序列化内部类,但我不能100%确定将内部类声明为“Icon Image”的语法)

我的观点是,使用Gson可以轻松/方便地将Json响应序列化为对象。但是,如果您只是尝试从响应中获取数据,请使用JSONObject类。

答案 2 :(得分:0)

假设已经创建了要存储数据的POJO类,即:json数组中的单个json对象。

让我们假设这个类是Node.java并包含一个Node对象。

您可以使用以下代码通过Gson从json获取Node对象的列表。

Gson gson = new Gson();
Type listType = new TypeToken<List<Node>>(){}.getType();
List<Node> posts = (List<Node>) gson.fromJson(jsonOutput, listType);

现在,您可以使用List并使用它来显示列表中的数据。

是的,根据venkatKA的答案,json也是错误的,因为它有一个额外的“,”

希望它有所帮助...

答案 3 :(得分:0)

1.Remove , after the  "filemime": "image/jpeg", json error.

2.Parse Json to Gson

public class Array {
@SerializedName("node_title")
@Expose
private String nodeTitle;
@SerializedName("nid")
@Expose
private String nid;
@SerializedName("Icon Image")
@Expose
private com.example.IconImage IconImage;
public String getNodeTitle() {
return nodeTitle;
}

public String getNid() {
 return nid;
}
}


public class IconImage {

@SerializedName("fid")
@Expose
private String fid;
@SerializedName("uid")
@Expose
private String uid;
@SerializedName("filename")
@Expose
private String filename;
@SerializedName("uri")
@Expose
private String uri;
@SerializedName("filemime")
@Expose
private String filemime;

public String getFid() {
return fid;
}

public String getUid() {
return uid;
}

public String getFilename() {
return filename;
}

public String getUri() {
return uri;
}
public String getFilemime() {
return filemime;
}

I hope it helps you.

答案 4 :(得分:0)

这里有一个很好的例子:Gson and deserializing an array of objects with arrays in it

所以你需要像这样解析你的Json字符串:

public class IconImage {
    int fid;
    int uid;
    String filename;
    String uri;
    String filemime;
}

public class Node {
    String node_title;
    int nid;
    @SerializedName("Icon Image") IconImage icon_image;
}

Gson gson = new Gson();
Node[] myNodes = gson.fromJson(yourJsonString, Node[].class);

答案 5 :(得分:-1)

你可以拥有这样的课程:

class NodeList{
      List<Node> allnode;
}

和其他类将是具有特定数组项的Node。