标准JSON文档结构的文档来源?

时间:2014-05-01 13:57:31

标签: json

我正在研究一个返回一些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结构遵循上面的“典型”示例而不是第二个示例的指南。

您是否可以提供指向一种格式或其他格式的推荐文档的链接?

1 个答案:

答案 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的错误。这是一个错误,在第一种情况下甚至不可能。所以告诉他们所要求的是垃圾,除了不必要的工作之外什么也不做。对于其他软件,您可能遇到同样的问题。