2012-02-14 2 views
1

Я пытаюсь проанализировать строку JSON, возвращаемую с веб-службы ASP.NET. Возвращенная строка была упрощена только это:Ошибка какао 3840 - NSJSONSerialization

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

Когда я запускаю следующий код в Xcode, я получаю ошибку «Error Domain = 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»

ответ

6

веб-службы, фактически возвращая <anyType d1p1:type="q1:string"> и </anyType> части этой строки в содержимом документа? Если да, то это проблема: Действительное строка JSON просто:

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

Это единственное содержание веб-ответ должен содержать. Все в угловых скобках не является фактически данными JSON, и это отбрасывает синтаксический анализатор.

2

Попробуйте эту надежду он будет работать

if ([operation isKindOfClass:[AFJSONRequestOperation class]] && [operation respondsToSelector:@selector(setJSONReadingOptions:)]) { 
    ((AFJSONRequestOperation *)operation).JSONReadingOptions = NSJSONReadingAllowFragments; 
} 
[httpClient enqueueHTTPRequestOperation:operation]; 
+0

работал отлично для меня – Amnysia

Смежные вопросы