java - Json 到 Java 的映射

标签 java jackson

我想将下面的 Json 数据映射到 List<Map<String, String>> 的 java 对象类型。

示例 Json:

{ 
  {
    a:b,
    c:d
  },
  {
    e:f,
    g:h,
    i:j
  },
  { 
   h:k
  }
}

在这里a:b表示键值对。所以a:bc:d将映射到列表的第一个 map ,依此类推。 一种方法是构建 JSON 树并访问每个节点并将该对​​存储到 map 中。

有没有更好的方法(更清洁的方法)?

最佳答案

这是读取 List<Map<String, String>> 的代码使用 Jackson 库,将您的示例数据作为输入:

public class JsonTest {
public static void main(String[] args) throws Exception {
    final String json
        = "[\n"
        + "    {\n"
        + "        \"a\":\"b\",\n"
        + "        \"c\":\"d\"\n"
        + "    },\n"
        + "    {\n"
        + "        \"e\":\"f\",\n"
        + "        \"g\":\"h\",\n"
        + "        \"i\":\"j\"\n"
        + "    },\n"
        + "    {\n"
        + "        \"h\":\"k\"\n"
        + "    }\n"
        + "]"; // [{a:b,c:d},{e:f,g:h,i:j},{h:k}]   
    ObjectMapper mapper = new ObjectMapper();
    TypeFactory factory = TypeFactory.defaultInstance();
    List<Map<String, String>> list = mapper.readValue(json,factory
        .constructCollectionType(List.class, factory
                .constructMapType(Map.class, String.class, String.class)));
    System.out.println(list.toString());
}
}

注意:我不得不从 {} 修复你最外面的牙套至 [] ,这是正确的 JSON 列表语法。

关于java - Json 到 Java 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628324/

相关文章:

java - OrientDB图形API : process results of SQL query

java - 为什么Java中的抽象类有构造函数?

java - main 方法中的 ArrayIndexOutOfBounds 异常

java - 使用循环从输入字符串中删除元音

java - 包含空格的枚举值

java - 如何提高RestTemplate的性能

json - Marklogic - 使用 java api 更新 json 元素数组

java - jackson 混音 : How to Ignore or Rename fields from class as tree

java - mule3 服务中的字符集转换

java - Jackson 将Value 转换为List 但返回null