org.json避免将空字段反序列化为JSONObject.Null

时间:2019-03-14 15:49:45

标签: java json jsonschema org.json

我正在将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
}

由于包含null值的json文件,验证失败。这些null值将反序列化为JSONObject.Null

根据to this,此行为是预期的:

  

警告:此类以两种不兼容的方式表示null:标准Java null引用和哨兵值NULL。特别是,调用put(name,null)会从对象中删除命名的条目,但是put(name,JSONObject.NULL)将存储一个值为JSONObject.NULL

的条目。

有没有办法防止org.json反序列化“空”值?

0 个答案:

没有答案