Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用json模式过滤Java中的json实例_Java_Json_Jsonschema - Fatal编程技术网

使用json模式过滤Java中的json实例

使用json模式过滤Java中的json实例,java,json,jsonschema,Java,Json,Jsonschema,我正在搜索一个库,它使我能够根据json模式过滤出json实例。如果json实例包含模式中未定义的元素,则应将其过滤掉。我在JavaScript中找到了这一点,但在Java中找不到这样做的东西 对于如何在Java中实现这一点,有人有什么建议吗?或者在哪里可以找到一个做这项工作的图书馆 问候 莫顿 示例 文件schemaname.json: { "type": "object", "properties": { "aid": { "type"

我正在搜索一个库,它使我能够根据json模式过滤出json实例。如果json实例包含模式中未定义的元素,则应将其过滤掉。我在JavaScript中找到了这一点,但在Java中找不到这样做的东西

对于如何在Java中实现这一点,有人有什么建议吗?或者在哪里可以找到一个做这项工作的图书馆

问候 莫顿

示例

文件schemaname.json:

{
    "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
。您对此有何回答?我也面临同样的问题