【发布时间】:2014-03-25 16:18:37
【问题描述】:
我在从 PHP 网络服务返回的响应字符串上使用 SBJSON 解析器时遇到错误:
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSError *error;
SBJSON *json = [SBJSON new];
NSArray *returnedFromWeb = [json objectWithString:responseString error:&error];
[articles_parsed removeAllObjects];
for (int i = 0; i < [returnedFromWeb count]; i++)
{
NSDictionary *dictColumns = [returnedFromWeb objectAtIndex:i];
[self parseArticlesObject:dictColumns];
dictColumns = nil;
}
我在上面的 objectAtIndex 调用中收到 unrecognized selector sent to instance 错误。当我检查我的数组 (returnedFromWeb) 中包含的值时,它显示有 17 个对象。但是,检查每个对象都会显示以下错误:
(<invalid>) [0] = <error: expected ']' error: 1 errors parsing expression >
我已经在下面的索引 [0] 处发布了从 SBJSON 解析器返回的数据:
{
0 = {
author = "CCJ Staff";
category1 = Products;
excerpt = "Toyo";
modified = "2014-03-25 08:33:57";
"short_link" = "http://www.example.com/?p=95326";
thumbnail = "http://www.example.com/files/2014/03/ Tire.jpg";
"thumbnail_243x243" = "http://www.example.com/ihz.php?src=/blogs.dir/10/files/2014/03/ Tire.jpg&w=243&h=243&q=100&zc=1";
title = "medium-duty";
};
这是 SBJSON 正在解析的字符串(缩短为仅包含第一个对象,末尾的逗号是下一个对象开始的位置):
{"numberposts":240,"tax_query":[{"taxonomy":"topic","terms":[75,43550,14394,16564,1795,43,22,12950],"field": "term_id","orderby":"date","order":"DESC"}],"0":{"title":"medium-duty","category1":"Products", 摘录":"东洋","修改":"2014-03-25 08:33:57","作者":"员工","缩略图":"http://www.ccjdigital.com/files/2014/03/Tire.jpg","short_link":"http:// www.ccjdigital.com/?p=95326"},
任何帮助表示赞赏!我对 iOS 和 SBJSON 还很陌生,无法弄清楚为什么我的数组无效。
【问题讨论】:
-
您是否验证了从 Web 服务器接收到的 json 以确保其格式正确?
-
你的 returnedFromWeb 可能不是一个 NSArray 而是一个 NSDictionary。
-
另外,
objectWithString消息会告诉你……一个对象,而不是一个数组。 -
请升级您的 SBJson 版本。 “SBJSON”类在 2 个主要版本中不存在……在最近的版本中早已不复存在。
标签: ios objective-c sbjson