Я пытаюсь использовать if / then / else для проверки json, но часть if / else / не проверяется должным образом. Когда я сравниваю "example. json" с файлом "parentSchema. json" ... предполагается, что это вызовет у меня ошибку, поскольку я не указываю "имя" в файле .. но это не вызывает у меня никаких проблем. ошибка и успешная проверка.
Пробовал несколько значений и несколько сценариев ios, включая все и другие c. Пытался проверить мои схемы на разных веб-сайтах (онлайн-редакторах), они там работают правильно и выдают мне ошибку, как ожидалось, но не в моем коде. Было бы очень полезно, если бы кто-нибудь мог мне помочь.
ниже - мой основной код класса. `
import org.everit.json.schema.Schema;
import org.everit.json.schema.loader.SchemaLoader;
import org.json.JSONObject;
import org.json.JSONTokener;
public class TestingJsonSchema {
public static void main(String args[]) {
JSONObject jsonSchema = new JSONObject(
new JSONTokener(TestingJsonSchema.class.getResourceAsStream("/parentSchema.json")));
JSONObject jsonSubject = new JSONObject(
new JSONTokener(TestingJsonSchema.class.getResourceAsStream("/example.json")));
//validateSchema
try{
Schema schemaValidator = SchemaLoader.load((jsonSchema));
schemaValidator.validate(jsonSubject);
}catch (Exception e){
System.out.println(" message is :"+ e.getMessage());
}
}
}
`
ниже мой файл pom. xml.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.everit.json</groupId>
<artifactId>org.everit.json.schema</artifactId>
<version>1.5.1</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
ниже мой родительский json файл "parentSchema. json".
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"enum": ["Russia", "Canada"]
},
"name": {
"type": "string"
},
"price": {
"type": "number"
}
},
"if": {
"properties": { "id": { "const" : "Russia" }}
},
"then": {
"required": ["name"]
},
"else": {
"required": ["price"]
}
}
ниже мой фактический json для проверки "пример. json".
{
"id": "Russia",
"price": 10.50
}
Это должно вызвать у меня ошибку, так как я не отправляю "имя "но он проходит успешно, как будто блок" IF / THEN / ELSE "никогда не выполнялся.