org.json избегайте десериализации пустых полей в JSONObject.Null - PullRequest
0 голосов
/ 14 марта 2019

Я использую 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?

...