如何使用 Jackson 映射动态对象

How to map a dynamic object with Jackson

你好我有下一个json回复:

如您所见,我有一个资源对象,其中包含许多不同的对象,但这些对象可能因输入而异。我创建了下一个 pojo:

这是我输入的 Pojo:

导入java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Input
{

  private String filepath;
  private String inputType;
  private List<Object> resources;

  @JsonProperty("filepath")
  public String getFilepath() {
    return filepath;
  }

  public void setFilepath(final String filepath) {
    this.filepath = filepath;
  }

  @JsonProperty("input_type")
  public String getInputType() {
    return inputType;
  }

  public void setInputType(final String inputType) {
    this.inputType = inputType;
  }

  @JsonProperty("resources")
  public List<Object> getResources() {
    return resources;
  }

  public void setResources(final List<Object> resources) {
    this.resources = resources;
  }
}

我将资源添加为对象列表,但我可以看到它是一个包含不同对象的对象。如何将这些不同的对象映射到 Java 中的对象?事实上,我需要计算我拥有多少资源,但我正在努力实现这一目标。谢谢!

使用 Map<String, Object> resources 而不是 List<Object> resources。它允许你有一个内部有不同对象的地图。

public class Input{
  private String filepath;
  private String inputType;
  private Map<String, Object> resources;

  // getters and setters here
}