首页 > 解决方案 > 如何使用 JSONSchema 接受任何对象字符串值,而不管其键是什么?

问题描述

我有一个系统正在接收 JSON 消息,其中包含来自文件静态分析的元数据。这些字段的名称是从扫描动态生成的,可以是任何有效字符串,但值始终是有效字符串。

例如

{
    "filename": "hello.txt",
    ...
    "meta": {
        "some file property": "any string",
        "some other file property": "another string",
        ...
    }
}

在收到消息之前,我无法知道 meta 中的键是什么,也不知道会有多少键。有没有一种在 JSONSchema 中捕获的方法,只要它们的值始终是字符串,存在什么键并不重要?

标签: jsonschema

解决方案


我想你正在寻找additionalProperties

使用“additionalProperties”进行验证仅适用于与“properties”中的任何名称不匹配且不匹配“patternProperties”中的任何正则表达式的实例名称的子值。

AdditionalProperties 的值可以是 JSON Schema,像这样

...
"additionalProperties" : {
  "type": "string"
}
...

如果我在解释中遗漏了任何内容,请随时告诉我,或者提出任何进一步的问题。


推荐阅读