gpt4 book ai didi

java - Jackson JSON 和 Jayway JSON 路径

转载 作者:行者123 更新时间:2023-12-02 11:09:54 26 4
gpt4 key购买 nike

我有一个如下的 json 字符串

    {
"haserrors":
{
"errornumber": "400",
"errors": [
{
"nameofbusiness-error-1": "nameofbusiness must have a length greater than 1",
"nameofbusiness-error-2": "legalname must have a length greater than 1",
"nameofbusiness-error-3": "postaladdress must have a length greater than 1",
"nameofbusiness-error-4": "city must have a length greater than 1",
"nameofbusiness-error-5": "state must have a length greater than 1",
"nameofbusiness-error-6": "pincode must have a length greater than 6, pincode must be numeric, pincode must be positive",
"nameofbusiness-error-7": "fewwords must have a length greater than 1",
"nameofbusiness-error-8": "lob must have a length greater than 1",
"nameofbusiness-error-9": "step must be numeric, step must be positive"
}
]
}
}

我需要提取“错误”下的所有节点和值。这是我当前的代码

    Configuration conf = Configuration.builder().jsonProvider(new JacksonJsonNodeJsonProvider())
.options(Option.ALWAYS_RETURN_LIST, Option.SUPPRESS_EXCEPTIONS).build();
ArrayNode jsonErrorMessageNodes = JsonPath.using(conf).parse(<<JSON STRING ABOVE>>).read("$..errors");

for (Iterator<JsonNode> it = jsonErrorMessageNodes.elements() ; it.hasNext() ; ) {
JsonNode node = it.next();
String s = node.toString();
System.out.println(node);
}

如何获取节点名称?

最佳答案

以下代码...

Configuration conf = Configuration.builder().jsonProvider(new JacksonJsonNodeJsonProvider())
.options(Option.ALWAYS_RETURN_LIST, Option.SUPPRESS_EXCEPTIONS).build();
ArrayNode jsonErrorMessageNodes = JsonPath.using(conf).parse(json).read("$..errors[*]");

for (Iterator<JsonNode> it = jsonErrorMessageNodes.elements() ; it.hasNext() ; ) {
JsonNode node = it.next();
for (Iterator<String> it1 = node.fieldNames(); it1.hasNext(); ) {
final String s = it1.next();
System.out.println(s);
}
}

...将打印出:

nameofbusiness-error-1
nameofbusiness-error-2
nameofbusiness-error-3
nameofbusiness-error-4
nameofbusiness-error-5
nameofbusiness-error-6
nameofbusiness-error-7
nameofbusiness-error-8
nameofbusiness-error-9

此代码与您发布的代码之间的主要区别在于 JsonPath 表达式。您正在使用: $..errors ,它会产生如下内容:

[
null,
[
{...}
],
null
]

因此,为了找到您感兴趣的节点,需要遍历多个节点。相比之下,此表达式:返回 errors 数组,例如

[
{...}
]

关于java - Jackson JSON 和 Jayway JSON 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50683057/

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