我正在研究一个返回一些JSON数据的(.NET)REST API。 API的使用者是嵌入式客户端。我们一直在努力建立我们将要使用的JSON结构。嵌入式客户端想要使用的格式是我以前在使用JSON时没有看到的。我建议它不是“典型的”JSON。我遇到了“在哪里'典型'JSON格式记录”的问题?
作为JSON的一个例子我“通常”看到:
{
"item" : {
"users": [ ... list of user objects ... ],
"times": [ ... list of time objects ...],
}
}
非典型JSON的一个例子:
{
"item" : [
{
"users": [ ... list of user objects ... ]
},
{
"times": [ ... list of time objects ...]
},
]
}
在第二个示例中,item包含一个对象数组,每个对象都包含一个属性,其值是实体数组。这是有效的JSON。但是,我没有遇到另一个以这种方式构造的JSON实例,它不是任意对象数组,而实际上是“item”对象的属性集。
在搜索json.org,stackoverflow.com和互联网上的其他地方时,我没有找到任何关于为什么JSON结构遵循上面的“典型”示例而不是第二个示例的指南。
您是否可以提供指向一种格式或其他格式的推荐文档的链接?
答案 0 :(得分:0)
不是链接,只是直截了当的回答:项目是索引(0,1,2,...)或键入(用户,时间)。无论您使用何种软件,您都可以轻松快速地获得索引或键控数据。但不是你所谓的“非典型”JSON:为了得到用户,我必须遍历数组并找到一个具有关键“用户”的字典。但是可能有两个或更多带有该键的字典。那我该怎么办呢?如果使用JSON模式,则无法检查“非典型”JSON。在iOS中,在我写的典型情况下
NSArray* users = itemDict [@"users"];
对于我必须编写的非典型JSON
NSArray* users = nil;
for (NSDictionary* dict in itemArray)
if (dict [@"users"] != nil)
users = dict [@"users"];
但是仍然没有使用键“users”检查多个dicts的错误。这是一个错误,在第一种情况下甚至不可能。所以告诉他们所要求的是垃圾,除了不必要的工作之外什么也不做。对于其他软件,您可能遇到同样的问题。