使用json模式过滤Java中的json实例
我正在搜索一个库,它使我能够根据json模式过滤出json实例。如果json实例包含模式中未定义的元素,则应将其过滤掉。我在JavaScript中找到了这一点,但在Java中找不到这样做的东西 对于如何在Java中实现这一点,有人有什么建议吗?或者在哪里可以找到一个做这项工作的图书馆 问候 莫顿 示例 文件schemaname.json:使用json模式过滤Java中的json实例,java,json,jsonschema,Java,Json,Jsonschema,我正在搜索一个库,它使我能够根据json模式过滤出json实例。如果json实例包含模式中未定义的元素,则应将其过滤掉。我在JavaScript中找到了这一点,但在Java中找不到这样做的东西 对于如何在Java中实现这一点,有人有什么建议吗?或者在哪里可以找到一个做这项工作的图书馆 问候 莫顿 示例 文件schemaname.json: { "type": "object", "properties": { "aid": { "type"
{
"type": "object",
"properties": {
"aid": {
"type": "string"
}
}
}
最终字符串json=
{
"aid" : "123954",
"newfield" : "itsValue"
}
我要问的是,下面显示的filterInstance(实例、模式)方法是否存在
JsonNode schema = JsonLoader.fromResource("path/schemaname.json");
JsonNode instance = (new ObjectMapper()).readTree(json);
JsonNode fInstance = filterInstance(instance,schema);
fInstance=
{
"aid" : "123954"
}
在映射到POJO时,可以忽略JSON中的新字段 在本例中,您的POJO是您的Jackson方案,在本例中使用Jackson进行序列化:)您可以使用。
这是上述问题的Java版本这个问题很久以前就发布了,规范可能已经更改,但从JSON模式2020-12开始,上述示例中的JSON是有效的,不应根据模式删除任何字段 上面示例中schemaname.JSON的JSON模式意味着JSON字符串是有效的,因为关键字“additionalProperties”的默认值为空模式{}
我还没有找到任何基于完整模式进行过滤的JSON模式过滤器,因此我将为此创建自己的实现,但如果有人知道任何用Java(或其他基于JVM的语言)编写的JSON模式过滤器实现,我会很高兴。我明白你的观点,但在我的具体示例中,我很难转换你的想法。我已经更新了问题,希望您能在我的例子中为我详细阐述一下?您的意思是,你不知道你在处理什么类型的JSON,想过滤掉满足某种模式的JSON?我不知道传入JSON的精确格式,希望我的应用程序能够排除它不关心的属性。正如上面的例子所示。
json
var包含一个字段,newfield
,它不是schemaname.json中合同的一部分,因此它不包含在结果中,fInstance
。您对此有何回答?我也面临同样的问题