gpt4 book ai didi

java.lang.NumberFormatException : For input string when trying to read Json with a path that contains number

转载 作者:行者123 更新时间:2023-11-30 06:20:04 25 4
gpt4 key购买 nike

我正在尝试返回一个 JSON 数组,如下所示:

jsarr = new JSONArray(JSON.read(genericPathComp).toString());

其中 genericPathComp 是编译后的 JSON 路径。

这种方法工作正常,但是当我的 JSON 路径包含数字时,会引发以下异常:

java.lang.NumberFormatException: For input string: "ustomerAccountBalance,billingAccount[(-1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at com.jayway.jsonpath.internal.filter.ArrayIndexFilter.filter(ArrayIndexFilter.java:75)
at com.jayway.jsonpath.internal.filter.PathTokenFilter.filter(PathTokenFilter.java:50)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:255)
at com.jayway.jsonpath.internal.JsonReader.read(JsonReader.java:103)
at dataAnalytics.ValidateAttributes.responseParser(ValidateAttributes.java:174)
at dataGeneration.Main.main(Main.java:76)

抛出此异常的 JSON 路径是:$.parts[customerAccountBalance,billingAccount[-1:]]

我不明白为什么它要解析 int,我错过了什么?

编辑:我正在使用 jayway 解析器,变量 JSON 是一个 ReadContext 变量。所以它是有效 JSON 的句柄。到目前为止,此代码适用于每个不含数字的 JSON 路径。例如 $.parts.billingAccount 和 $.name.date 都可以工作。

原始 JSON 看起来像这样:

[
{
"Name": [
{
"value": "John"
}
],
"parts": {
"customerAccountBalance": [
{
"amount": "1"
}
],
"billingAccount": [
{
"type": "example"
},
{
"date": "also example"
}
]
}
}
]

我想返回一个由最后一个计费帐户数组和所有客户帐户余额组成的数组。

最佳答案

这个异常...

java.lang.NumberFormatException: For input string: "ustomerAccountBalance,billingAccount[(-1"
at

... 发生是因为 Jayway 期望在左方括号后跟一个数字 (0 - 9)。看着Jayway docs它允许左方括号后跟 ' (对于括号标记的子项)或 ? (对于过滤器),并且除了它期望的左方括号之外后面跟一个数字。

因此,您问题中提供的 json 路径无效。我怀疑您正在尝试读取 parts.customerAccountBalance 中的最后一个 billingAccount。如果是这样,请继续阅读...

给定这个 JSON:

{
"parts": {
"customerAccountBalance": {
"billingAccount": [
1,
2,
3
]
}
}
}

此 json 路径:$.parts.customerAccountBalance.billingAccount[-1:] 将返回:

[
3
]

您可以使用在线 Jayway Evaluator 自行尝试。 .

更新:

And I would like to return an array that consists of the that last array of billing account and all of customer account balance.

给定这个 JSON:

{
"Name": [
{
"value": "John"
}
],
"parts": {
"customerAccountBalance": [
{
"amount": "1"
}
]
},
"billingAccount": [
{
"type": "example"
},
{
"date": "also example"
}
]
}

这涉及两个读取调用:

  • “计费帐户的最后一个数组”:$.billingAccount[-1:]
  • “所有客户帐户余额”:$.parts.customerAccountBalance

关于java.lang.NumberFormatException : For input string when trying to read Json with a path that contains number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344364/

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