0

我有一个 WebService,它给了我闲置的 Json-String:

"{\"password\" : \"1234\",  \"user\" : \"andreas\"}"

我调用网络服务并尝试解析返回的数据,例如:

[NSURLConnection sendAsynchronousRequest: request
                                   queue: queue
                       completionHandler: ^(NSURLResponse *response, NSData *data, NSError *error) {


        if (error || !data) {
           // Handle the error
        } else {
           // Handle the success
           NSError *errorJson = nil;
           NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &errorJson];
           NSString *usr = [responseDict objectForKey:@"user"];
        }
   }
 ];

但生成的 NSDictionary 看起来像:

在此处输入图像描述

有什么影响,我无法获得值 - 例如用户。有人可以帮助我,我做错了什么吗?- 谢谢。

4

1 回答 1

1

从调试器屏幕截图看来,服务器(无论出于何种原因)返回“嵌套 JSON”:responseDict[@"d"]又是一个包含 JSON 数据的字符串,因此您必须应用NSJSONSerialization两次:

NSError *errorJson = nil;
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData: data options:0 error: &errorJson];
NSData *innerJson = [responseDict[@"d"] dataUsingEncoding:NSUTF8StringEncoding];
NSMutableDictionary *innerObject = [NSJSONSerialization JSONObjectWithData:innerJson options:NSJSONReadingMutableContainers error:&errorJson];
NSString *usr = [innerObject objectForKey:@"user"];

如果您可以选择,更好的解决方案是修复 Web 服务以返回正确的 JSON 数据。

于 2013-06-24T19:25:03.217 回答