我想使用 GSON 库从 Json 对象中提取数组。
我已经尝试创建类并让 Gson 库完成工作,但在这种特殊情况下它不起作用。
提取数据的类
public class Images {
private Image[] images;
public class Image {
private String url;
public Image(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
}
public Images(Image[] images) {
this.images = images;
}
public Image[] getImages() {
return images;
}
}
示例数据
...
,
"images": [
{
"url": "https://a.allegroimg.com/original/030516/a867b9dd4021b15678fc03a3981b"
},
{
"url": "https://a.allegroimg.com/original/03da09/19740f7147ad929609cc2bcc499e"
},
{
"url": "https://a.allegroimg.com/original/03198b/c024c7e448cab876bb49ad055567"
},
{
"url": "https://a.allegroimg.com/original/039fee/64bae4c64dac89e5b5b4d001c2ca"
}
],
...
我收到错误:“com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但在第 1 行第 283 列路径 $.items.promoted[0].images 处为 BEGIN_ARRAY”
我请求帮助从 json 对象中提取数据。
编辑
我只需要删除类“Images”并将“url”从 Json 保存到 Image[]
最佳答案
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 283 path $.items.promoted[0].images
该问题是由包装类Images
引起的。从错误来看,我认为你的对象是这样的:
class Promoted {
private Images images;
..
}
class Images {
private Image[] images;
}
在您当前的表单中,您能够解析的 json 是:
...
,
"images": {
"images": [
{
"url": "https://a.allegroimg.com/original/030516/a867b9dd4021b15678fc03a3981b"
},
{
"url": "https://a.allegroimg.com/original/03da09/19740f7147ad929609cc2bcc499e"
},
{
"url": "https://a.allegroimg.com/original/03198b/c024c7e448cab876bb49ad055567"
},
{
"url": "https://a.allegroimg.com/original/039fee/64bae4c64dac89e5b5b4d001c2ca"
}
]
}
...
相反,您可以直接将数组 Image[]
嵌入到父对象中(无需包装类):
class Promoted {
private Image[] images;
..
}
关于java - 从 Json 对象中提取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940818/