gpt4 book ai didi

java - 使用 Jackson-Java 将 JSON 转换为 HashMap

转载 作者:行者123 更新时间:2023-11-30 03:50:46 25 4
gpt4 key购买 nike

在将其标记为重复之前,请阅读问题(我确实看过类似的问题)。谢谢。

为简单起见,假设我有这样的 JSON:

{
"clients" : [
{
"name" : "client 1",
"id" : 1
},
{
"name" : "client 2",
"id" : 2
}
],
"other" : {
"something" : ""
}

...
}

所以我想创建一个仅包含客户端及其字段的 HashMap 。基本问题是我将如何使用 Jackson 方法对单个 JSON 数组(如客户端)执行此操作?我尝试在网上查找,但我看到的所有示例要么不使用 Jackson,要么仅针对单个 JSON 对象,如下所示:

HashMap<String, String>[] values = new ObjectMapper().readValue(jsonString, new TypeReference<HashMap<String, String>[]>() {});

我也看过 Gson 示例,我知道我可以做一些字符串解析魔法:

jsonSting = jsonString.substring(jsonString.indexOf("["), (jsonString.indexOf("]")+1))

以我可以使用的格式获取它,但我想与 Jackson 一起尝试以避免导入另一个库。有任何想法吗?

<小时/>

重新表述问题:因此,如果我只有这样的客户列表:

jsonString = [{"name" : "client 1","id" : 1},{"name" : "client 2","id" : 2}]

那么我可以这样做:

HashMap[] values = new ObjectMapper().readValue(jsonString, new TypeReference[]>() {});

得到我想要的东西。我基本上是在问是否有一种方法可以使用 Jackson 方法从顶部的大 JSON 部分获取上面的 jsonString 。我知道我可以通过字符串解析轻松地完成此示例,但将来会出现更复杂的情况,并且字符串解析并不是真正被认为是最佳实践

最佳答案

您可以使用 the Jackson tree model API 提取 JSON 树的一部分然后将其转换为 map 数组。

这是一个例子:

public class JacksonReadPart {
public static final String JSON = "{\n" +
" \"clients\" : [\n" +
" {\n" +
" \"name\" : \"client 1\",\n" +
" \"id\" : 1\n" +
" },\n" +
" {\n" +
" \"name\" : \"client 2\",\n" +
" \"id\" : 2\n" +
" }\n" +
"],\n" +
" \"other\" : {\n" +
" \"something\" : \"\"\n" +
" }\n" +
"\n" +
"}";

public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(JSON).path("clients");

// non type safe
Map<String, Object>[] clients = mapper.treeToValue(node, Map[].class);
System.out.println(Arrays.toString(clients));

// type safe
JsonParser parser = mapper.treeAsTokens(node);
clients = parser.readValueAs(new TypeReference<Map<String, Object>[]>() {});
System.out.println(Arrays.toString(clients));
}
}

输出:

[{name=client 1, id=1}, {name=client 2, id=2}]
[{name=client 1, id=1}, {name=client 2, id=2}]

关于java - 使用 Jackson-Java 将 JSON 转换为 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com