0

我必须在下面做 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"}

我也想解析它并获取“从富兰克林大道到大军广场03:56:30 - 03:58:30”文本和所有 id 即 1,239N,75。如果有人知道该怎么做,请帮助我。

4

4 回答 4

2

如果您使用的是 iOS 5.0 及更高版本,请尝试以下操作:

NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData
                                                         options:kNilOptions 
                                                           error:&error];

其中 responseData 是 NSData(你得到的响应)而不是 NSString。要获取文本“From Franklin Av To Grand Army Plaza03:56:30 - 03:58:30”,您可以使用:

[[[json objectForKey@"aps"] objectForKey@"alert"] objectForKey@"body"];
于 2012-06-25T11:14:21.910 回答
1

我假设将上述响应主要存储在 NSData(以下代码段中的数据)中,存储在 NSDictionary 中:

    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。

于 2012-06-25T11:13:45.860 回答
0

使用TouchJSON

    // 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 解析器库,其中有很多

于 2012-06-25T10:59:33.823 回答
0

试试这个代码

NSDictionary *menu = (NSDictionary *) [data objectForKey:@"aps"];
NSDictionary *data = (NSDictionary *) [menu objectForKey:@"alert"];
NSString *com=(NSString *) [data objectForKey:@"body"]];
NSLog(@"Body= %@",com);
于 2012-06-25T11:03:10.243 回答