如何为Name/Value结构创建JSON Schema?

Dam*_*ash 22 javascript java json jsonschema

我的问题是我正在将地图内容序列化为JSON.

在输出(JSON)中,我有跟随键/名称语法规则的对象.

密钥是从map键创建的,名称来自值.

模型示例:

  class Storage {
       Map<String,String> values = new HashMap<>();

      {
         map.put("key1","key1");
         map.put("key2","key2");
         map.put("key3","key3");
      }

    }
Run Code Online (Sandbox Code Playgroud)

JSON示例对象:

{
  key1=value1,
  key2=value2,
  key3=value3
}
Run Code Online (Sandbox Code Playgroud)

JSON架构:

{
  "name": "storage",
  "description": "Store of key values",
  "properties": {
    // How can we describe the properties if we do not know the name ?
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我不知道它的价值是什么,但我知道它们会是一些.

你能帮我提一下架构的完整定义吗?


免责声明:

我知道这也可以序列化为

 {
    values: [
       {key="key1", value="value1"},
       {key="key2", value="value2"},
       {key="key3", value="value3"}
    ]
 }
Run Code Online (Sandbox Code Playgroud)

但是不希望在JSON中有数组.

McD*_*ell 22

假设您的验证器支持它,您可以使用patternProperties.

对于架构......

{
  "title": "Map<String,String>",
  "type": "object",
  "patternProperties": {
    ".{1,}": { "type": "string" }
  }
}
Run Code Online (Sandbox Code Playgroud)

......和文件......

{
    "foo":"bar",
    "baz":1
}
Run Code Online (Sandbox Code Playgroud)

...属性foo的值是有效的,因为它是一个字符串,但是baz验证失败,因为它是一个数字.

  • 更简单:使用`"additionalProperties":{"type":"string"}`.这指定任何未指定的属性必须满足给定的模式. (6认同)