Java GSON无法解析对象数组

a0x5cqrl  于 2022-11-06  发布在  Java
关注(0)|答案(2)|浏览(249)

我有一个问题。我正在做一个webcall,我在我的屏幕上打印了一个json,看起来像这样:

{"Agents":[{"Id":"1","Owner":"Andre"},{"Id":"7","Owner":"Andre2"},{"Id":"8","Owner":"Andre"},{"Id":"9","Owner":"Alexander"},{"Id":"10","Owner":"Alexander"},{"Id":"12","Owner":"Andre"}]}

然后我使用下面的代码从Web获取json并将其解析为数组对象:

EfyWebAPI webAPI = new EfyWebAPI();
String jsonResponse = webAPI.executeQuery("www.mysite.org/test.php", "SELECT Id, Owner FROM Agents");

Gson gson = new Gson();
Agent[] agents = gson.fromJson(jsonResponse, Agent[].class);

System.out.println(agents[0].getId());

该类如下所示:

public class Agent {

    private int id;
    private String owner;

    public Agent(int id, String owner) {
        this.id = id;
        this.owner = owner;
    }

    public int getId() {
        return this.id;
    }

}

但是当我运行代码时,我得到了以下错误:
在线程“main”中出现异常。java.lang.IllegalStateException:应该是开始_ARRAY,但在第1行第1列路径$为字符串。来自Json(Gson.java:822)在com. google. gson. gson。来自Json(Gson.java:775)在com.google.gson。来自Json(Gson.java:724)在com. google. gson。来自Json(Gson.java:696)在com.company.Main.main(Main.java:18)导致:java.lang.IllegalStateException:在第1行第1列的路径中,预期的是开始_ARRAY,但却是com.google.gson.internal.bind.ArrayTypeAdapter.read。
为什么会发生这种情况?我该如何解决?

ehxuflar

ehxuflar1#

它的工作原理是......它不是得到id=1,而是得到id=0。我想它是从json中得到对象计数的id。这是如何工作的?为什么我不能一次解析多个对象并将其返回到数组列表或其他东西中?
JSON(或者至少是GSON)总是期望一个字符串作为key(据我所知),字符串后面的内容并不重要,只要它符合JSON标准。
你所说的是可能的,如果你声明
{"persons" : [ +您的内容的其余部分+ ]},但是我不确定您是否可以自动将其解析为List<Agent>

相关问题