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

标签 java json jackson robospice google-http-client

我的 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;
  }

}

辛普森.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/

相关文章:

java - Android SearchView 使用 FloatingActionButton

java - maven编译时校验drl文件

javascript - 嵌套 json 传入 ajax 调用

JSON::XS "Usage"呱呱

java - Jackson Mapper 序列化空对象而不是 null

java - 如何使用带有 lombok Builder 的 jackson 来反序列化 json 数组?

java - 如何拆分计算器类?

javascript - 使用 BeanShell 预处理器发送 JSON 对象时出现问题

通过注释将 Java 类转换为 JSON 自定义架构

java - 编程新手, double 不会添加