如何制作NSDictionary并在iPhone中解析它?

时间:2012-06-25 10:54:52

标签: iphone nsdictionary

我必须在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。如果有人知道怎么做,请帮助我。

4 个答案:

答案 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)

使用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解析器库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);