如何使用 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
}
你好我有下一个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
}