2012-02-14 68 views
1

我想解析從ASP.NET Web服務返回的JSON字符串。返回字符串已簡化爲這樣:可可錯誤3840 - NSJSONSerialization

<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」

回答

6

是Web服務實際上將文檔返回的內容中該字符串的<anyType d1p1:type="q1:string"></anyType>部分?如果是這樣,這就是問題所在:有效的JSON字符串很簡單:

[{"Firstname":"Johnny"}]

這是您的Web響應應該包含的唯一內容。尖括號中的所有內容實際上並不是JSON數據,而是拋棄瞭解析器。

2

試試這個希望它會工作

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

完全爲我工作 – Amnysia 2013-09-26 18:01:35

相關問題