首页 文章

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

提问于
浏览
19

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

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

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

模型示例:

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

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

    }

JSON示例对象:

{
  key1=value1,
  key2=value2,
  key3=value3
}

JSON架构:

{
  "name": "storage",
  "description": "Store of key values",
  "properties": {
    // How can we describe the properties if we do not know the name ?
   }
}

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

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


Disclaimer:

我知道这也可以序列化为

{
    values: [
       {key="key1", value="value1"},
       {key="key2", value="value2"},
       {key="key3", value="value3"}
    ]
 }

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

2 回答

  • 20

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

    对于架构......

    {
      "title": "Map<String,String>",
      "type": "object",
      "patternProperties": {
        ".{1,}": { "type": "string" }
      }
    }
    

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

    {
        "foo":"bar",
        "baz":1
    }
    

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

  • 0

    我使用了@augurar“additionalProperties”建议的解决方案:{“type”:“string”}

    对于AWS API Gateway Model ....并且SDK能够根据Java / Android SDK中的需要生成Map变量

    @Arne Burmeister - 在我的情况下 - 解决方案1没有按需工作 - 尽管它没有在模型中给出任何错误(Schema Created)

相关问题