【问题标题】:Map JsonArray to List<Pojo> using Jackson ObjectMapper使用 Jackson ObjectMapper 将 JsonArray 映射到 List<Pojo>
【发布时间】:2021-08-04 19:13:14
【问题描述】:

我需要使用 Jackson 的 ObjectMapper 将表示为 String 的 Json 数组转换为 List&lt;Pojo&gt;

这是我所做的,但实际上并不奏效:

public static <T> List<T> toList(String jsonString, Class<T> clazzType) {

    try {
      List<T> list = OBJECT_MAPPER.readValue(jsonString, new TypeReference<List<T>>() {});

      return list;

    } catch (IOException ex) {
      throw new RuntimeException(ex);
    }
  }

它返回一个带有内部列表的对象,但并没有真正构建预期的 Pojos 列表。我看到了一些使用反射的尝试,但我试图让它保持纯粹的杰克逊。

有什么想法吗??

【问题讨论】:

  • 你不应该需要反思。您可能需要确保 POJO 中的变量是基本类型 - 或者,如果是另一种类型,则另一种类型由基本类型组成,依此类推。就个人而言,我对 Gson 的运气更好: Gson gson = new Gson(); MyObject obj = gson.fromJson(reader, MyObject.class);

标签: java jackson jackson-databind


【解决方案1】:

您可以使用 TypeFactory 创建一个 CollectionLikeType。 比如这样:

ObjectMapper objectMapper = new ObjectMapper();

CollectionLikeType collectionLikeType = objectMapper.getTypeFactory()
    .constructCollectionLikeType(List.class, String.class);

List<String> o = objectMapper.readValue("[\"hello\"]", collectionLikeType);

assertEquals(o, List.of("hello"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多