代码之家  ›  专栏  ›  技术社区  ›  xyz

用Jackson将命名列表反序列化为列表

  •  1
  • xyz  · 技术社区  · 6 年前

    我要使用以下结构从string.class反序列化JSON:

    {"listName": [{"prop":"value"},{"prop":"value"}, ... ] }
    

    到A List<PropVo> ,其中propvo包含字符串prop作为字段。

    • 我不想用 列表<propvo>
    • 我不想使用子字符串

    是否有仅反序列化到列表的选项?

    2 回复  |  直到 6 年前
        1
  •  1
  •   ernest_k Petronella    6 年前

    可以使用类型引用将该JSON转换为 Map<String, List<PropVo>> :

    Map<String, List<PropVo>> m = objectMapper.readValue(string, 
            new TypeReference<Map<String, List<PropVo>>>() {});
    
        2
  •  0
  •   xyz    6 年前

    另一种方法是使用readtree

    例子:

    ObjectMapper om = new ObjectMapper();
    JsonNode list = om.readTree(json).path("listName");
    List<PropVo> result = Arrays.asList(om.treeToValue(list,PropVo[].class);