- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试返回一个 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/
我是一名优秀的程序员,十分优秀!