gpt4 book ai didi

java - 使用 Google HTTP 客户端库从 JSON 结果中解析匿名数组

转载 作者:行者123 更新时间:2023-11-30 07:05:48 24 4
gpt4 key购买 nike

我的 REST 服务响应以下数据:

[
{
"name": "Bart",
"age": 10
},
{
"name": "Homer",
"age": 42
},
{
"name": "Marjorie",
"age": 34
}
]

结果集是一个对象数组,我想用 Google 的 HTTP 客户端库自动解析这些对象。因此我创建了一个 SimpsonResultSimpson 类:

SimpsonResult.java

public class SimpsonResult {

private List<Simpson> simpsons;

public SimpsonResult() {
}

public List<Simpson> getSimpsons() {
return simpsons;
}

public void setSimpsons(List<Simpson> simpsons) {
this.simpsons = simpsons;
}

}

Simpson.java

public class Simpson {

@Key
private String name;

@Key
private int age;

public Simpson() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

}

现在我想查询我的后端并自动将响应映射到 SimpsonResult。因此我写了下面的代码:

@Override
public SimpsonResult loadDataFromNetwork() throws IOException {
HttpRequestFactory requestFactory = getHttpRequestFactory();
GenericUrl url = new GenericUrl(baseUrl);
HttpRequest request = requestFactory.buildGetRequest(url);
request.setParser(new JacksonFactory().createJsonObjectParser());
return request.execute().parseAs(SimpsonResult.class);
}

但是当我执行代码时,我从 com.google.api.client.json.JsonParser 得到一个解析器异常。

当我将它映射到一个字符串 (request.execute().parseAsString()) 时,它就可以工作了。

所以我认为我的映射声明是错误的?

最佳答案

你这样做的方式是无效的。 SimpsonResult,需要一个名为simpsons的字段,而你的json中没有这个字段。

由于在大多数框架中使用通用集合类型有点棘手,我通常为此做的是在 Simpson 类中创建一个简单的列表类型:

public class Simpson {

public static class List extends ArrayList<Simpson> {
}

... //you simpson code
}

然后您可以使用 Simpson.List 通过注释解析您的 json。

关于java - 使用 Google HTTP 客户端库从 JSON 结果中解析匿名数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26327576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com