json在iOS中解析
我正在玩iOS中的JSON
解析器。json在iOS中解析
但我很纳闷一个如何将真正分析的东西(有点)更复杂,我JSON
显示的数据是这样的:
"terms":"3",
"results":
{
"Events":[
{
"Event_Name":"3 Doors Down",
"Event_NavigateURL":"3-doors-down"
},
{
"Event_Name":"Alabama 3",
"Event_NavigateURL":"alabama-3"
},
{
"Event_Name":"Belsonic 2013",
"Event_NavigateURL":"belsonic-2013"
},
{
"Event_Name":"Download Festival 2013",
"Event_NavigateURL":"download-festival-2013"
}
],
"Sports":{
},
"Venues":{
}
}
我要取的Event_Name
价值,并希望将其存储在泰伯维,我应该如何获取?
我想这一点,但没有成功,我得到SIGABRT ... (NSInvalidArgumentException)
,
cell.textLabel.text = [[[[arr objectAtIndex:indexPath.row] objectAtIndex:@"results"] objectForKey:@"Events"] objectForKey:@"Event_Name"];
在此先感谢...
要显示的TableView事件名称的数组应该存储活动的对象,获取在阵列原样从JSON活动
arr = [[JSONObject objectForKey:@“results”] objectForKey:@“Events”];
// and set cell text label as -
cell.textLabel.text =[[arr objectAtIndex:indexPath.row] objectForKey:@"Event_Name"];
包括JSON框架工作的首位.. http://longweekendmobile.com/2010/10/15/how-to-consume-json-or-xml-web-apis-on-iphone-smoothly/,然后按照:
NSError *error;
SBJSON *json = [SBJSON new];
NSDictionary *dict_item = [json objectWithString:resp_str error:&error];
if (dict_item == nil)
NSLog(@"%@", [NSString stringWithFormat:@"JSON parsing failed: %@", [error localizedDescription]]);
else
NSLog(@"items selected is : %@", dict_item);
你需要检查天气它返回一个数组或字典..(实际返回类型i的ID)..
,然后用这种方式,你可以最终得到的事件名称的值
不要打扰使用SBJSON它比本地apis慢。 – Fogmeister 2013-04-29 09:43:07
我能够解析我的JSON数据,这里是我的我的日志输出:'{ “术语”: “3”, “成果”:{ “事件”: { “EVENT_NAME”:“3门下来”, “Event_NavigateURL”: “3门向下” }, { “EVENT_NAME”: “阿拉巴马州3”, “Event_NavigateURL”: “阿拉巴马州-3” }, { “EVENT_NAME” :“Belsonic 2013”, “Event_NavigateURL”:“belsonic-2013” }, { “Event_Name”:“Download Festival 2013”, “Event_NavigateURL”:“download-festival-2013” } ], “体育”:{} , “场地”:[] } }' – Krunal 2013-04-29 09:44:06
是的,我们都在内置类中的ios这些天JSON解析有自己的..但我所建议的最简单的方法.. – Rakesh 2013-04-29 09:44:43
尝试这样可能it'l帮助你,
NSArray *array=[[[jsonarray objectAtIndex:0] valueForKey:@"results"] valueForKey:@"Events"];
NSString *name=[[array objectAtIndex:indexPath.row] valueForKey:@"Event_Name"];
尝试关闭
cell.textLabel.text = [[[[arr objectAtIndex:indexPath.row] objectAtIndex:@"results"] objectForKey:@"Events"] objectForKey:@"Event_Name"];
到
cell.textLabel.text = [[[[yourJsonDict objectForKey:@"results"] objectForKey:@"Events"] objectAtIndex:indexpath.row] objectForKey:@"Event_Name"];
首先你的json是无效的。如果你在开始时加入'{',并在结尾加上'}',那么它就是有效的。 其次,你应该使用在线json解析网站来查看你的json字符串是否有效。尝试http://jsonviewer.stack.hu/
而对于json解析使用NSJSONSerialization的NSJSON套件。 转到这篇文章如何使用它。 How to use NSJSONSerialization
{}括号中的对象表示它是一个NSDictionary对象,[]内的对象表示它们是NSArray对象的一部分。
总是在你的json字符串中寻找数组对象和字典对象。如果你访问它们的方式不同,你的应用程序肯定会崩溃。 – 2013-04-29 09:49:37
那个JSON是如何失效的? – Anupdas 2013-04-29 11:17:58
jsons字符串以[]括号或{}括号开头,表示它分别是NSArray类型json或NSDictionary类型对象。 在你的情况下,你的字符串有键值对,这意味着它是一个NSDictionary对象。所以,为此,有效的json必须包含{开头和结尾处的字符串,以显示字典对象的开头和结尾 – 2013-04-29 11:30:49
以上不是有效的JSON(如果以上是总响应)。使用jsonLint.com进行验证。
你可以试试这个:
arr = [NSMutableArray arrayWithCapacity:[[dic objectForKey:@"Events"] count]];
for (NSDictionary *details in [dic objectForKey:@"Events"]){
[arr addObject:[details objectForKey:@"Event_Name"]];
}
然后给arr
作为输入UITableview
最佳实践是查看链接中的JSON结构:http://json.bloople.net/。
粘贴你的JSON响应,你会发现正确的结构。
您的JSON结构是这样的:字典数组。因此,使用下面的代码将数据存储在数组中。
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
arr = [[jsonObject objectForKey:@“results”] objectForKey:@“Events”];
使用以下代码显示Tableview
中的数据。
cell.textLabel.text =[[arr objectAtIndex:indexPath.row] objectForKey:@"Event_Name"];
您可以存储根对象并根据需要获取数据。逐层访问数据。如果你想显示事件,你可以为这些事件创建一个数组,这样就可以避免一次又一次地执行这些步骤。
@property (nonatomic, strong) NSDictionary *json;
@property (nonatomic, strong) NSArray *events;
NSError *error = nil;
self.json = [NSJSONSerialization JSONObjectWithData:responseData
options:NSJSONReadingAllowFragments
error:&error];
NSDictionary *results = self.json[@"results"];
self.events = results[@"Events"];
//Access each event in events array and get the event name
NSDictionary *event = self.events[0];
NSString *eventName = event[@"Event_Name"];
首先,你的JSON是无效的 – 2013-04-29 09:39:46