在杰克逊映射期间将数组转换为哈希图,每个条目键是条目的 id 字段

问题描述 投票:0回答:1

这是我正在处理的 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 是否可以在反序列化过程中自动进行类型转换?

java json jackson hashmap
1个回答
0
投票

您需要创建 getter/setter 并在那里与地图进行转换。还提供地图的 getter。

© www.soinside.com 2019 - 2024. All rights reserved.