我想为基于 JSON 的协议正式定义一个模式。我对模式有两个标准: 1. 我希望能够使用工具来创建解析器/序列化器(php 和 .net)。2. 结果 JSON 应该易于人类阅读
这是上下文。该模式将描述一个游戏角色,作为一个例子,我将采用配置文件的一个方面 - 职业。一个角色最多可以拥有 2 个职业(从 10 个列表中),每个职业都由一个名称和一个级别来描述,例如:
剥皮 - 200 级 铁匠 - 300 级
为了满足标准#1,使用 XSD 模式(或 JSON 模式)来驱动代码生成器或解析器库确实很有帮助。但这意味着我的 JSON 必须类似于:
character : {
professions : [
{ profession : "Skinning", level : 525 }
{ profession : "Blacksmith", level : 745 }
]
}
但是感觉太啰嗦了,我宁愿让 JSON 看起来像(注意使用职业作为键):
character {
professions : {
"Skinning" : 525,
"Blacksmith" : 745
}
}
但是后面的 JSON 不能用 XSD 来描述,而不必为每个职业定义一个元素。
因此,我正在寻找适合我情况的解决方案,以下是我确定的选项:
- 闭嘴,让 JSON XSD 友好(上面的第一个片段)
- 闭嘴,让 JSON 人性化,手动编码解析器/序列化器。
但我真的很想找到一个同时满足这两个标准的解决方案。
注意:我知道 Newton-King 的 JSON 库可以让我将职业解析为字典 - 但它需要我手动编码类型以将此 JSON 映射到。因此,到目前为止,我倾向于选项#2,但我愿意接受建议。