我使用NSURLConnectionDelegate
本地NSJsonSerialization
。我得到的是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。它没有给出任何错误!!
答案 0 :(得分:0)
嗯,JSON不是一个数组(除非你遗漏了一些字符)。你可能通过“数组”枚举,因此得到字典值,没有键。 NSLog“数组”本身的值,你会看到你所有的键(实际上是一个NSDictionary)。
(如果密钥真的都是“公司”,你只会收到一个“公司”元素。多个相同的密钥将是从另一端发送的无效JSON。)