我想将下面的 Json 数据映射到 List<Map<String, String>>
的 java 对象类型。
示例 Json:
{
{
a:b,
c:d
},
{
e:f,
g:h,
i:j
},
{
h:k
}
}
在这里a:b
表示键值对。所以a:b
和 c: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/