【问题标题】:NSJSONSerialization parsing not returning all values in response Array/ DictionaryNSJSONSerialization 解析不返回响应数组/字典中的所有值
【发布时间】:2013-12-20 17:31:32
【问题描述】:

我正在使用原生 NSURLConnectionDelegateNSJsonSerialization。我收到的是 REST 响应,但不是它包含的所有值。

我在网络浏览器中有这个 JSON 响应:

{
"error" : {
    "err_num" : 0,
    "err_message" : ""
}, 
"company" : {
    "id" : 1,
    "name" : "company_string1"
},
"company" : {
    "id" : 7,
    "name" : "company_string2"
},
"company" : {
    "id" : 19,
    "name" : "company_string3"
},
"company" : {
    "id" : 13,
    "name" : "company_string4"
},
"company" : {
    "id" : 14,
    "name" : "company_string5"
}
}

我正在异步使用NSURLConnection并实现

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    [receivedData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [receivedData appendData:data];
}   // receivedData is NSMutuableData initialized before 

connectionDidFinishLoading 我愿意:

NSMutableDictionary *array = [NSJSONSerialization JSONObjectWithData:self.receivedData options:NSJSONReadingMutableContainers error:&error];

当我登录时,我得到了

{
    "err_message" = "";
   "err_num" = 0;
}
{
    id = 14;
    name = "company_string5";
}

如果我使用NSJSONReadingAllowFragments 我会得到

{
    "err_message" = "";
    "err_num" = 0;
} 
{
    id = 1;
    name = company_string1;
}

还检查了NSDictionary,但我得到了相同的结果。由于重复键,他们在这里的 JSON 有问题吗,它只返回最后一个/第一个吗?我也碰巧在网上查了一下,几乎都说它是有效的 JSON。它没有给出任何错误!

【问题讨论】:

    标签: ios5 nsurlconnection nsjsonserialization


    【解决方案1】:

    嗯,JSON 不是一个数组(除非你遗漏了一些字符)。您可能正在通过“数组”进行枚举,因此无需键即可获取字典值。 NSLog "array" 本身的值,你会在那里看到所有的键(实际上是一个 NSDictionary)。

    (如果键确实都是“公司”,您将只会收到一个“公司”元素。多个相同的键将是从另一端发送的无效 JSON。)

    【讨论】:

    • 这与我在浏览器中得到的 Json 响应完全相同,我最初认为它是无效的 JSON,但现在我认为我是正确的。它应该是一个嵌套的 JSON,只有一个“公司”键。
    • @Vacca JSON应该嵌套什么?如果字典中有多个相同的键(JSON“对象”),那么这是无效的 JSON。
    猜你喜欢
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多