如何为名称/值结构创建 JSON 模式?
Posted
技术标签:
【中文标题】如何为名称/值结构创建 JSON 模式?【英文标题】:How to create JSON Schema for Name/Value structure? 【发布时间】:2014-04-09 08:53:03 【问题描述】:我的问题是我将 map 的内容序列化为 JSON。
在输出 (JSON) 中,我有遵循键/名称语法规则的对象。
键是从映射键创建的,名称是从值创建的。
模型示例:
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 ?
问题是我不知道这些值是什么,但我知道它们会是一些。
您能帮我提供架构的完整定义吗?
免责声明:
我知道这个也可以序列化为
values: [
key="key1", value="value1",
key="key2", value="value2",
key="key3", value="value3"
]
但不想在 JSON 中有数组。
【问题讨论】:
听起来你拥有的属性将是一个“key”数组:假设您的验证器支持它,您可以使用patternProperties。
对于架构...
"title": "Map<String,String>",
"type": "object",
"patternProperties":
".1,": "type": "string"
...还有文件...
"foo":"bar",
"baz":1
...属性 foo 的值是有效的,因为它是一个字符串,但 baz 因为它是一个数字,所以验证失败。
【讨论】:
更简单:使用"additionalProperties": "type": "string"
。这指定任何未另行指定的属性都必须满足给定的架构。
".1," 将此解决方案用于具有 Map 键值的数据可以解决我的问题。我很高兴你发布了。谢谢。【参考方案2】:
我使用了@augurar 建议的解决方案 “附加属性”:“类型”:“字符串”
对于 AWS API Gateway 模型 .... 并且 SDK 能够根据 Java / android SDK 的要求生成 Map 变量
@Arne Burmeister - 就我而言 - 解决方案 1 没有按需要工作 - 尽管它在模型中没有给出任何错误(已创建架构)
【讨论】:
以上是关于如何为名称/值结构创建 JSON 模式?的主要内容,如果未能解决你的问题,请参考以下文章
[iPhone]你将如何为下面给出的结构设计核心数据对象模型