这是我正在处理的 JSON:
{
"default": "ignore-me",
"catalog": [
{
"id": "object-1",
"name": "Object 1"
},
{
"id": "object-3",
"name": "Object 3"
},
{
"id": "object-2",
"name": "Object 2"
}
]
}
我可以使用 Jackson 在 Java 中解析它:
ObjectMapper mapper = new ObjectMapper();
Catalogs catalogs = mapper.readValue(new File("/catalogs.json"), Catalogs.class);
Catalogs.java
和Catalog.java
的Java模型:
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public class Catalogs {
@JsonProperty("default")
private String defaultField;
private List<Catalog> catalogList;
// getters / setters
}
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Catalog {
private String id;
private String name;
// getters / setters
我的目标是将
List<Catalog> catalogList
转换为类似 HashMap
的东西,这样当提前知道 id
时可以更快地访问条目,而不必遍历所有条目。
所以我想做一些类似的事情:
Catalog catalog = catalogs.getCatalogList().get("object-1");
Jackson 是否可以在反序列化过程中自动进行类型转换?
您需要创建 getter/setter 并在那里与地图进行转换。还提供地图的 getter。