【发布时间】:2022-08-07 15:00:39
【问题描述】:
我有一个 JsonNode 结果表示为:
[
{
\"item\": {
\"type\": \"uri\",
\"value\": \"http://www.wikidata.org/entity/Q42442324\"
},
\"prop\": {
\"type\": \"uri\",
\"value\": \"http://www.wikidata.org/prop/direct/P21\"
},
\"itemLabel\": {
\"xml:lang\": \"en\",
\"type\": \"literal\",
\"value\": \"Kiisu Miisu\"
}
},
{
\"item\": {
\"type\": \"uri\",
\"value\": \"http://www.wikidata.org/entity/Q43260736\"
},
\"prop\": {
\"type\": \"uri\",
\"value\": \"http://www.wikidata.org/prop/direct/P21\"
},
\"itemLabel\": {
\"xml:lang\": \"en\",
\"type\": \"literal\",
\"value\": \"Paddles\"
}
}
]
我正在尝试使用以下代码将键 \"value\" 的值检索到数组列表中,但出现错误无法调用 \"com.fasterxml.jackson.databind.JsonNode.findValue(String)\" 因为 \"com.fasterxml.jackson.databind.JsonNode.get(int)\" 的返回值为 null
for (int i = 0; i < resultSize; i++) {
JsonNode jsonObject = results.get(i);
if (indexRow < jsonObject.size()) {
jsonRows = Collections.singletonList(jsonObject.get(indexRow++).findValue(\"value\").asText());
}
}
调试器第一次迭代中变量 jsonObject 的值是
{
\"item\": {
\"type\": \"uri\",
\"value\": \"http://www.wikidata.org/entity/Q42442324\"
},
\"prop\": {
\"type\": \"uri\",
\"value\": \"http://www.wikidata.org/prop/direct/P21\"
},
\"itemLabel\": {
\"xml:lang\": \"en\",
\"type\": \"literal\",
\"value\": \"Kiisu Miisu\"
}
}
预期输出为
[
\"http://www.wikidata.org/entity/Q42442324\",
\"http://www.wikidata.org/entity/Q42442324\",
\"Kiisu Miisu\",
\"http://www.wikidata.org/entity/Q43260736\",
\"http://www.wikidata.org/prop/direct/P21\",
\"Paddles\"
]
-
你为什么使用findvalue?在 json 中
value是您应该使用get()方法的键 -
你能发布预期的输出吗
-
@deadshot 错误出现在 jsonObject.get(indexRow++) 上,它返回 null。无法调用 \"com.fasterxml.jackson.databind.JsonNode.findValue(String)\" 因为 \"com.fasterxml.jackson.databind.JsonNode.get(int)\" 的返回值为 null
-
预期输出为 [wikidata.org/entity/Q42442324, wikidata.org/entity/Q42442324, Kiisu Miisu, wikidata.org/entity/Q43260736, wikidata.org/prop/direct/P21, 桨]
标签: java json jackson jackson-databind