0

iOS開発初心者です。そして、 NSJSONSerialization で json を処理すると、何か本当に問題があることがわかります。

NSLog(@"response: %@", responseString);
NSData *jsonData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
NSLog(@"dict: %@", dict);

出力は次のとおりです。

2013-03-18 20:13:56.228 XXXX[3550:5003] response: {"status":"success","data":"{\"title\":\"\",\"sessionName\":\"sid\",\"sessionID\":\"9217e5df3db6b4b4aa3eed800890069f\",\"rand\":5360}","md5":"292ee1e78628fc6360c647e938c4f1ea"}
2013-03-18 20:13:56.229 XXXX[3550:5003] dict: {
data = "{\"title\":\"\",\"sessionName\":\"sid\",\"sessionID\":\"9217e5df3db6b4b4aa3eed800890069f\",\"rand\":5360}";
md5 = 292ee1e78628fc6360c647e938c4f1ea;
status = success;

「\」を使用すると、データ セクションを NSDictionary オブジェクトにすることはできません

それで、それを正しくするために私は何をすべきですか?

下手な英語でごめんなさい。

4

1 に答える 1

1

何らかの理由で、「data」の値はJSONディクショナリではなく、JSONデータを含む文字列です。JSONObjectWithDataこの文字列に再度適用し、辞書の値を置き換えることで、これを修正できます。

NSData *jsonData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];

NSData *nestedJsonData = [[dict objectForKey:@"data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *nestedDict = [NSJSONSerialization JSONObjectWithData:nestedJsonData options:NSJSONReadingMutableContainers error:nil];

[dict setObject:nestedDict forKey:@"data"];
NSLog(@"dict: %@", dict);

出力:

dict: {
    data =     {
        rand = 5360;
        sessionID = 9217e5df3db6b4b4aa3eed800890069f;
        sessionName = sid;
        title = "";
    };
    md5 = 292ee1e78628fc6360c647e938c4f1ea;
    status = success;
}
于 2013-03-18T14:16:42.413 に答える