Я использую org.json с https://github.com/everit-org/json-schema для проверки файлов JSON, прежде чем сохранять их в базе данных.
String schemaString = readSchemaFromUrl(urlToRootSchema, StandardCharsets.UTF_8);
String jsonString = readFile(pathToJson, StandardCharsets.UTF_8);
JSONObject rawSchema = new JSONObject(new JSONTokener(schemaString));
Schema schema = SchemaLoader.load(rawSchema);
try {
JSONObject json = new JSONObject(jsonString);
schema.validate(json); // throws a ValidationException if this object is invalid
}
Проверка не удалась из-за файлов json, содержащих null
значения. Эти null
значения десериализованы в JSONObject.Null
.
Согласно этому , ожидается следующее поведение:
Предупреждение: этот класс представляет нуль двумя несовместимыми способами: стандартная ссылка на нуль Java и значение часового NULL. В частности, вызов put (name, null) удаляет именованную запись из объекта, но метод put (name, JSONObject.NULL) сохраняет запись, значение которой равно JSONObject.NULL
Есть ли способ предотвратить десериализацию значения null в org.json?