我想正式定义基于JSON的协议的架构。 我有两个架构标准: 1.我希望能够使用工具来创建解析器/序列化器(php和.net)。 2.结果JSON应该易于人为阅读
这是上下文。该模式将描述一个游戏角色,作为一个例子,我将采用该概况的一个方面 - 职业。 角色最多可以有2个职业(从10个名单中),每个职业都用名称和级别来描述,例如:
剥皮 - 等级200 铁匠 - 等级300
为了满足标准#1,使用XSD架构(或JSON Schema)来驱动代码生成器或解析器库真的很有帮助。但这意味着我的JSON必须类似于:
character : {
professions : [
{ profession : "Skinning", level : 525 }
{ profession : "Blacksmith", level : 745 }
]
}
但感觉太健谈了,我宁愿让JSON看起来像(注意职业用作关键):
character {
professions : {
"Skinning" : 525,
"Blacksmith" : 745
}
}
但是后来的JSON无法用XSD描述而不必为每个职业定义一个元素。
所以我正在为我的情况寻找解决方案,这里有我已经确定的选项:
但我真的想找到一个能满足这两个标准的解决方案。
注意:我知道Newton-King的JSON库允许我将职业解析为字典 - 但它需要手工编写类型以将此JSON映射到。因此,到目前为止,我倾向于选项#2,但我愿意接受建议。
答案 0 :(得分:1)
将专业重命名为如此:
character : {
professions : [
{ name : "Skinning", level : 525 }
{ name : "Blacksmith", level : 745 }
]
}
然后在客户端模型上序列化后会是这样的:
profession = character.professions[0]
profession.name
=> "Skinning"
答案 1 :(得分:0)
正如你所说,你的选择是...... 1闭嘴并使用xml 2闭嘴并建立自己的
或者3 ...... http://davidwalsh.name/json-validation
我会做#1 - 因为xml似乎是从X =>转换内容的一种相当常见的方法。 Y格式 - 我更喜欢使用C#而不是JS - 许多人使用XML,这是一个公认的标准,有很多资源可以帮助你一路走来