我必须在NSDictionary下面制作
{"aps":{"sound":"default",
"alert":{"body":"From Franklin Av To Grand Army Plaza03:56:30 - 03:58:30",
"action-loc-key":"View"},"badge":1},"user_id":"1","start_station_id":"239N","node_id":"75"}
我也希望解析它并获得“从Franklin Av到Grand Army Plaza03:56:30 - 03:58:30”文本和所有id,即1,239N,75。如果有人知道怎么做,请帮助我。
答案 0 :(得分:2)
如果您使用的是iOS 5.0及以上版本,请尝试此操作:
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData
options:kNilOptions
error:&error];
其中responseData是NSData(你得到的响应)而不是NSString。 要获得文字“从Franklin Av到Grand Army Plaza03:56:30 - 03:58:30”你可以使用:
[[[json objectForKey@"aps"] objectForKey@"alert"] objectForKey@"body"];
答案 1 :(得分:1)
在NSDictionary中存储上面的响应主要是NSData(下面代码片段中的数据):
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error];
现在你有了NSDictionary json。使用[[[json objectForKey:@"aps"] objectForKey:@"alert"] valueForKey:@"body"]
作为第一个要求,使用第二个要求:
[json valueForKey:@"user_id"];
[json valueForKey:@"start_station_id"];
[json valueForKey:@"node_id"];
注意:iOS 5及更高版本具有可以处理JSON响应的NSJSONSerialization。
答案 2 :(得分:0)
// i think you will have a downloaded NSData here, but..you gave us a string
NSData *responseData = [string dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
CJSONDeserializer *deserializer = [CJSONDeserializer deserializer];
deserializer.nullObject = NULL;
NSDictionary *JSON_dictionary = [deserializer deserialize:responseData error:&error];
NSLog(@"%@",[[[JSON_dictionary objectForKey:@"aps"] objectForKey:@"alert"] objectForKey:@"body"]);
您也可以使用任何其他JSON解析器库there are many of them
答案 3 :(得分:0)
试试此代码
NSDictionary *menu = (NSDictionary *) [data objectForKey:@"aps"];
NSDictionary *data = (NSDictionary *) [menu objectForKey:@"alert"];
NSString *com=(NSString *) [data objectForKey:@"body"]];
NSLog(@"Body= %@",com);