没有值的 AFNetworking JSON 数组

Posted

技术标签:

【中文标题】没有值的 AFNetworking JSON 数组【英文标题】:AFNetworking JSON array without value 【发布时间】:2012-12-26 14:00:20 【问题描述】:

我在使用 AFNetworking 从 API 获取 JSON 信息时遇到问题,格式如下:


    "result": [
        [
            
                "user": "test user",
                "password": "test password",
                "company": "test company"
            
        ]
    ]

注意 [[]](双方括号)。 但只有一个值“结果”。

我得到错误:

ApiTest[83166:c07] -[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x7136a30
ApiTest[83166:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x7136a30'
*** First throw call stack:
(0x1da6012 0x123de7e 0x1e314bd 0x1d95bbc 0x1d9594e 0x3d60 0x3122 0x16909 0x179953f 0x17ab014 0x179b7d5 0x1d4caf5 0x1d4bf44 0x1d4be1b 0x21397e3 0x2139668 0x18565c 0x2a9d 0x29c5)
libc++abi.dylib: terminate called throwing an exception

当我在本地设置文件并仅使用一组方括号“[]”时,我的 AFNetworking/JSON 项目代码可以很好地处理 JSON 数据。


    "results": [
        
            "user": "test user",
            "password": "test password",
            "company": "test company"
        
    ]

因此,如果没有方括号集,我可以使用以下方法成功获得“结果”:

self.results = [jsonObject objectForKey:@"result"];

如果我的项目是 javascript,我会使用类似的东西:

var userId = data.result[0][0].user;

有谁知道如何使用 Objective C 正确选择我的数组? 我花了几天的时间进行调查,但我被困住了。

提前致谢。

【问题讨论】:

请显示解析 JSON 数据的代码,然后尝试访问解析后的数据。 【参考方案1】:

问题是你在另一个数组中获取一个数组,所以你需要这样做

NSArray *array = [jsonObject objectForKey:@"result"];
if (array.count > 0)
    self.results = [array objectAtIndex:0];

【讨论】:

以上是关于没有值的 AFNetworking JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking multipart/form-data POST 发送不正确的 JSON 字典数组

使用 AFNetworking 2 将 Json 数组发送到服务器时出错

AFNetworking 在 GET 请求的 JSON 参数中发送数组

AFNetworking 将 JSON 数组发布为多个单条目字典

以 JSON 字符串数组形式获取 AFNetworking 响应的结果

AFNetworking 2.0 将 [] 方括号添加到发送到服务器的 json