java - 从 Json 对象中提取数组

标签 java json gson

我想使用 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/

相关文章:

android - 使用 GSON 读取 JSON 数据

java - GAE/Java : How load image from a given URL and get image width and height

java - 重写方法不抛出任何异常时的异常处理

java - jetty : store request-specific information

jQuery - 异步执行

json - 将 Postgres Json 数组包装在 Json 对象中

java - XML 解析错误

python - 嵌套类的 JSON(反)序列化

java - Gson - 避免每个 Action 有多个类

java - Gson反序列化和序列化 transient 字段