1

我正在尝试解析从 ASP.NET Web 服务返回的 JSON 字符串。返回字符串已简化为:

<anyType d1p1:type="q1:string">[{"Firstname":"Johnny"}]</anyType>

当我在 xcode 中运行以下代码时,我收到“错误域 = NSCocoaErrorDomainCode = 3840”的错误...“JSON 文本没有以数组或对象开头,并且未设置允许片段的选项”

NSURL *url = [NSURL URLWithString:@"http://webserver.com/Service.asmx/GetNames"];
    NSData *data = [NSData dataWithContentsOfURL:url];
      if(data != nil)
        {
            NSError *error = nil;
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
                if(error == nil)
        {
            NSLog(@"%@", result);
        }else{
            NSLog(@"%@",error);
        }
    }else{
        NSLog(@"it's nil");
    }

我真的不知道在这里做什么?错误似乎在“id result =”行。

*我认为这可能是我的 reutrn 字符串的格式,但我在 ASP.NET 帖子上读到的所有内容都表明这是正确的。

*我已将“NSJSONReadingMutableContainers”更改为“NSJSONReadingMutableLeves”

4

2 回答 2

6

Web 服务实际上是否在文档内容中返回该字符串的<anyType d1p1:type="q1:string"></anyType>部分?如果是这样,那就是问题所在:有效的 JSON 字符串很简单:

[{"Firstname":"Johnny"}],

这是您的 Web 响应应包含的唯一内容。尖括号中的所有内容实际上都不是 JSON 数据,它会导致解析器关闭。

于 2012-02-21T20:47:57.097 回答
2

试试这个希望它会工作

if ([operation isKindOfClass:[AFJSONRequestOperation class]] && [operation respondsToSelector:@selector(setJSONReadingOptions:)]) {
    ((AFJSONRequestOperation *)operation).JSONReadingOptions = NSJSONReadingAllowFragments;
}
[httpClient enqueueHTTPRequestOperation:operation];
于 2013-03-06T05:48:23.567 回答