Вы можете использовать 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
из String (его не нужно форматировать). Затем мы используем метод 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