Java 如何为名称/值结构创建JSON模式?
我的问题是我正在将map的内容序列化为JSON 在输出(JSON)中,我有一个遵循key/name语法规则的对象 键是从映射键创建的,名称是从值创建的 模型示例:Java 如何为名称/值结构创建JSON模式?,java,javascript,json,jsonschema,Java,Javascript,Json,Jsonschema,我的问题是我正在将map的内容序列化为JSON 在输出(JSON)中,我有一个遵循key/name语法规则的对象 键是从映射键创建的,名称是从值创建的 模型示例: class Storage { Map<String,String> values = new HashMap<>(); { map.put("key1","key1"); map.put("key2","key2"); ma
class Storage {
Map<String,String> values = new HashMap<>();
{
map.put("key1","key1");
map.put("key2","key2");
map.put("key3","key3");
}
}
JSON模式:
{
"name": "storage",
"description": "Store of key values",
"properties": {
// How can we describe the properties if we do not know the name ?
}
}
问题是,我不知道这些值是什么,但我知道它们将是一些
你能帮我提供模式的完整定义吗
免责声明: 我知道这也可以序列化为
{
values: [
{key="key1", value="value1"},
{key="key2", value="value2"},
{key="key3", value="value3"}
]
}
但是我们不希望JSON中有数组。假设您的验证器支持它,您可以使用它 对于模式
{
"title": "Map<String,String>",
"type": "object",
"patternProperties": {
".{1,}": { "type": "string" }
}
}
…属性foo的值是有效的,因为它是一个字符串,但是baz由于它是一个数字而无法验证。我使用了@augurar建议的解决方案 “附加属性”:{“类型”:“字符串”} 对于AWS API网关模型。。。。SDK能够按照Java/Android SDK中的要求生成Map变量
@Arne Burmeister-在我的例子中-解决方案1没有按需要工作-尽管它没有在模型中给出任何错误(创建的模式)听起来您拥有的属性应该是一个“key”:“value”:
“additionalProperties”:{“type”:“string”}
。这指定任何未另行指定的属性都必须满足给定的架构。“{1,}”对具有映射键值的数据使用此解决方案为我的问题提供了答案。很高兴你发了邮件。非常感谢。
{
"title": "Map<String,String>",
"type": "object",
"patternProperties": {
".{1,}": { "type": "string" }
}
}
{
"foo":"bar",
"baz":1
}