使用gson解析JSON数组

vjrehmav  于 2022-11-23  发布在  其他
关注(0)|答案(6)|浏览(256)

当我试图通过gson检索jsonobject时,它可以工作,但当我使用gson检索jsonArray时,它不工作。如何通过GSON从下面的jsonArray中检索数据并显示到列表视图中?
有人能帮我吗?
我的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",
    }
 }
]
r3i60tvu

r3i60tvu1#

我认为问题出在"filemime": "xxx"之后的,

wz1wpwve

wz1wpwve2#

编辑:我想我误解了你的问题,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的数组。
(As对于内部类,我知道Gson可以序列化内部类,但我不能100%确定将该内部类声明为“图标图像”的语法)
我的观点是,使用Gson可以轻松/方便地将Json响应序列化为对象。但如果您只是试图从响应中获取数据,请使用JSONObject类。

du7egjpx

du7egjpx3#

假设已经创建了要存储数据的POJO类,即:json数组中的单个json对象。
让我们假设这个类是Node.java并且包含一个节点对象。
您可以使用下面的代码通过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也是错误的,因为它有一个额外的“”。
希望能帮上忙...

ep6jt1vc

ep6jt1vc4#

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.
uoifb46i

uoifb46i5#

这里有一个很好的例子: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);
3gtaxfhh

3gtaxfhh6#

你可以有这样一个类:

class NodeList{
      List<Node> allnode;
}

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

相关问题