Прошу помочь с такой задачей.
Имеется json1, который является телом запроса к апи: {"key1":"value1","key2":"value2","key3":"value3"}
и json2, являющийся телом ответа: {"key0":"value0","key1":"value1","key2":"value2","key3":"value3","key4":"value4"}
. Требуется осуществить проверку: key1 и key3 из тела запроса должны содержаться в теле ответа.
Так же интересует, какие удобные библиотеки существуют для подобных сравнений. Спасибо!
Для таких целей можно использовать GSON:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
Пример использования:
import com.google.gson.Gson;
public class Main {
private static final String JSON_1 = "{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\"}";
private static final String JSON_2 = "{\"key0\":\"value0\",\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\",\"key4\":\"value4\"}";
class EntityOne {
private String key1;
private String key2;
private String key3;
}
class EntityTwo {
private String key0;
private String key1;
private String key2;
private String key3;
private String key4;
}
public static void main(String[] args) {
Gson gson = new Gson();
EntityOne one = gson.fromJson(JSON_1, EntityOne.class);
EntityTwo two = gson.fromJson(JSON_2, EntityTwo.class);
if (!one.key1.equalsIgnoreCase(two.key1)) {
throw new AssertionError("JSON_1.key1 != JSON_2.key1");
}
if (!one.key1.equalsIgnoreCase(two.key3)) {
throw new AssertionError("JSON_1.key1 != JSON_2.key3");
}
}
}
Вывод:
Exception in thread "main" java.lang.AssertionError: JSON_1.key1 != JSON_2.key3
at Main.main(Main.java:29)
PS: Если не требуется создание новых классов, можно использовать Map
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Map;
public class Main {
private static final String JSON_1 = "{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\"}";
private static final String JSON_2 = "{\"key0\":\"value0\",\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\",\"key4\":\"value4\"}";
public static void main(String[] args) {
Gson gson = new Gson();
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> one = gson.fromJson(JSON_1, type);
Map<String, String> two = gson.fromJson(JSON_2, type);
if (!one.get("key1").equalsIgnoreCase(two.get("key1"))) {
throw new AssertionError("JSON_1.key1 != JSON_2.key1");
}
if (!one.get("key1").equalsIgnoreCase(two.get("key3"))) {
throw new AssertionError("JSON_1.key1 != JSON_2.key3");
}
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста как мне можно присвоить фон кнопке фон в виде xml файла
Почему выдает ошибку и не признает Graphics g? Из библиотеки привязалВсе прописал вроде