NeedSomeAnswers
NeedSomeAnswers

Reputation: 53

Cocoa Error 3840 - NSJSONSerialization

I'm trying to parse a JSON string returned from a ASP.NET web service. The return string has been simplified to just this:

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

When I run the following code in xcode, I get an error of "Error Domain=NSCocoaErrorDomainCode=3840"..."JSON text did not start with array or object and option to allow fragments are not set"

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");
    }

I'm not really sure what to do here? The error seems to be on the "id result =" line.

*I thought it might be the format of my reutrn string, but everything i read on ASP.NET posts says this is correct.

*I have changed "NSJSONReadingMutableContainers" to be "NSJSONReadingMutableLeves"

Upvotes: 1

Views: 14573

Answers (2)

Muhammad Aamir Ali
Muhammad Aamir Ali

Reputation: 21087

Try this hope it will work

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

Upvotes: 2

Mike Fahy
Mike Fahy

Reputation: 5707

Is the Web service actually returning the <anyType d1p1:type="q1:string"> and </anyType> portions of that string within the content of the document? If so, that's the problem: The valid JSON string is simply:

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

This is the only content your Web response should contain. Everything in angled brackets is not actually JSON data, and it's throwing the parser off.

Upvotes: 6

Related Questions