全体の考えは、jsonでもある文字列を持つオブジェクト「D」を含むjsonであるため、json内のjsonです。
'outer json' : { "d" : "" }
+ an inner json : {"count":"0","status":"500","recipes":[]}
\ なしで内側の json を挿入しただけでは、無効な json が取得される可能性があります..実際には (この場合) そうはしませんが、lib は安全側にあるようにしようとしているため、内側の json をエスケープし、次のようにエンコードします。文字列!
以下に示すように、文字列を取得して解析すると正常に機能し、すべてが有効です
id innerJSON = @"{\\\"count\\\":\\\"0\\\",\\\"status\\\":\\\"500\\\",\\\"recipes\\\":[]}";
id response = [NSString stringWithFormat:@"{\"d\":\"%@\"}", innerJSON];
id data = [response dataUsingEncoding:NSUTF8StringEncoding];
id outerJson = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", outerJson[@"d"]);
data = [outerJson[@"d"] dataUsingEncoding:NSUTF8StringEncoding];
id innerJson = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@ %@", innerJson[@"count"],innerJson[@"status"]);