Это не вопрос огурца. Это скорее вопрос о том, как вы можете преобразовать некоторые json
в что-то, что вы можете проверить, является правильным.
Я вижу три или четыре разных аппроксимации, все они включают в себя внешнюю библиотеку для анализа json
и преобразования ее в объект Java, который вы можете утверждать с помощью своей обычной платформы утверждений.
Начните с того, что спросите своих разработчиков, какую библиотеку они используют для работы с json
. Если у вашего проекта нет предпочтительного способа работы с json
, я бы добавил тестовую зависимость к
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
и используйте его для разбора строки json
на объект, который можно проверить.
Возможно, стоит отметить, что ваш пример недействителен json
, так как он не начинается с {
или заканчивается }
Исправление этого дает пример, который выглядит так:
{"Name": [
{
"abc1": "xyz2",
"abc": "xyz"
},
{
"abc1": "xyz21",
"abc": "yzk"
},
{
"abc1": "xyz211",
"abc": "zxc"
}
]}
С помощью этого примера я смог реализовать пример, который выглядит следующим образом:
package se.thinkcode;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class ParseJson {
@Test
public void verifyNameArray() {
JSONObject jsonObject = new JSONObject(getSample());
JSONArray array = jsonObject.getJSONArray("Name");
assertThat(array.length()).isEqualTo(3);
}
private String getSample() {
return "{\n" +
"\"Name\": [\n" +
" {\n" +
" \"abc\": \"xyz\",\n" +
" \"abc1\": \"xyz2\" \n" +
" },\n" +
" {\n" +
" \"abc\": \"yzk\",\n" +
" \"abc1\": \"xyz21\"\n" +
" },\n" +
" {\n" +
" \"abc\": \"zxc\",\n" +
" \"abc1\": \"xyz211\"\n" +
" }\n" +
"]" +
"\n}";
}
}
Ваша задача - взять массив, проверить каждый элемент в нем и посмотреть, содержит ли он то, что вам нужно.