I am parsing a JSON in my code. But I am getting some unexpected issues while retrieving data of parsed JSON. So let me explain my problem.
I have to parse following JSON data using xcode. This is what data to be parsed looks like while I hit same URL in browser:
{
"RESPONSE":[
{"id":"20",
"username":"john",
"email":"[email protected]",
"phone":"1234567890",
"location":"31.000,71.000"}],
"STATUS":"OK",
"MESSAGE":"Here will be message"
}
My code to reach up to this JSON data is as follow:
NSData *data = [NSData dataWithContentsOfURL:finalurl];
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
If I print object json using NSLog, i.e. NSLog(@"json: %@", [json description]); it looks like:
json: {
MESSAGE = "Here will be message";
RESPONSE =(
{
email = "[email protected]";
id = 20;
location = "31.000,71.000";
phone = 1234567890;
username = john;
}
);
STATUS = OK;
}
So, here I observed two things:
Sequence of keys (or nodes) (
MESSAGE,RESPONSEandSTATUS) is changed as compared to web response above.The
RESPONSEis get enclosed in'(' & ')'braces.
Now if I separate out values for keys MESSAGE & STATUS and NsLog them, then they get printed as proper string.
Like msgStr:Here will be message & Status:OK
But if I separate out value for RESPONSE as a dictionary and again separating sub values of that dictionary like email and username, then I can't getting those as string.
Here is the code so far I wrote:
NSMutableDictionary *response = [json valueForKey:@"RESPONSE"];
NSString *username = [response valueForKey:@"username"];
NSString *emailId = [response valueForKey:@"email"];
If I print username and emailId, then they are not getting printed as normal string, instead it outputs as:
username:(
john
)
email:(
[email protected]
)
So my question is why it's not getting as a normal string? If I tried to use this variables further then they show value enclosed within '(' & ')' braces. Is this happening because of NSJSONSerialization?