我有一个json代码:
"ACCOUNT":
{
"AmountDue": "$36,812.99",
"OutstandingBalance": "$27,142.27",
"StatementTotal": "$9,670.72",
"StatementDate": "12/6/2018",
"DueByDate": "12/23/2018",
"AccountNumber": "5-029-5685-55"
},
我需要获取AmountDue以使用门户网站值进行验证。如何获取此值。
我尝试使用直接方式,
String amountToValidate = jsonObj.ParseJson(billMeterJson, "AmountDue").toString();
但是需要从多级代码中获取。有任何想法吗。 我已经尝试过了,但是出错了。
String amountToValidate = jsonObj.ParseJson(billMeterJson, "data.ACCOUNT[0].AmountDue").toString();
答案 0 :(得分:0)
您可以使用JsonPath
中的RestAssured
。解析JSON对象和数组的好库。
Maven依赖项:
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>3.3.0</version>
</dependency>
为了解析JSON,您可以将其提供为String
或File
。使用JsonPath.from()
并将其作为参数传递。
示例JSON:
{
"data": {
"ACCOUNT": [
{
"AmountDue": "$36,812.99",
"OutstandingBalance": "$27,142.27",
"StatementTotal": "$9,670.72",
"StatementDate": "12/6/2018",
"DueByDate": "12/23/2018",
"AccountNumber": "5-029-5685-55"
},
{
"AmountDue": "$40,000.00",
"OutstandingBalance": "$27,142.27",
"StatementTotal": "$9,670.72",
"StatementDate": "12/6/2018",
"DueByDate": "12/23/2018",
"AccountNumber": "5-029-5685-55"
}
]
}
}
让我们跳入代码:
JsonPath path = JsonPath.from("{\r\n" +
" \"data\": {\r\n" +
" \"ACCOUNT\": [\r\n" +
" {\r\n" +
" \"AmountDue\": \"$36,812.99\",\r\n" +
" \"OutstandingBalance\": \"$27,142.27\",\r\n" +
" \"StatementTotal\": \"$9,670.72\",\r\n" +
" \"StatementDate\": \"12/6/2018\",\r\n" +
" \"DueByDate\": \"12/23/2018\",\r\n" +
" \"AccountNumber\": \"5-029-5685-55\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"AmountDue\": \"$40,000.00\",\r\n" +
" \"OutstandingBalance\": \"$27,142.27\",\r\n" +
" \"StatementTotal\": \"$9,670.72\",\r\n" +
" \"StatementDate\": \"12/6/2018\",\r\n" +
" \"DueByDate\": \"12/23/2018\",\r\n" +
" \"AccountNumber\": \"5-029-5685-55\"\r\n" +
" }\r\n" +
" ]\r\n" +
" }\r\n" +
"}");
System.out.println(path.getString("data.ACCOUNT[1].AmountDue"));
我们正在根据字符串创建JsonPath
(不需要格式化)。然后,我们使用path.getString()
方法获得所需的值。如果您需要第一个帐户的AmountDue
,只需更改索引即可。
第System.out.println(path.getString("data.ACCOUNT[1].AmountDue"));
行打印$40,000.00
如果我将其更改为System.out.println(path.getString("data.ACCOUNT[0].AmountDue"));
,那么它将打印$36,812.99