我正在将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反序列化“空”值?