1

次のような JSON オブジェクトを受け取ります。

{"data":null,
 "error":1,
 "error_code":"InvalidSID",
 "sid":"",
 "num_rows_total":0,
 "last_insert_id":0,
 "error_info":"Comment...",
 "error_data":[]}

このコードを使用したJSONKit:

NSString *responseString = [request responseString];
NSDictionary *requestDictionary = [responseString objectFromJSONString];
if([[requestDictionary objectForKey:@"error"] intValue]) {
    if([@"InvalidSID" isEqualToString:[requestDictionary objectForKey:@"error_code"]]) {
        [self.navigationController popViewControllerAnimated:YES];
    }
}

次のような出力が生成されます。

{
data = "<null>";
error = 1;
"error_code" = InvalidSID;
"error_data" = ();
"error_info" = "Comment...";
"last_insert_id" = 0;
"num_rows_total" = 0;
sid = "";
}

if問題は、の周りに引用符がないため、このステートメントが呼び出されないことInvalidSIDです。これらの引用符が消えてしまう JSONKit に関する既知の問題はありますか?

4

1 に答える 1

0

NSDictionary からの「説明」出力をキーの値と混同しています。また、簡単な調査作業を使用することで、多くの時間を節約できた可能性があります (これは、これを投稿してから応答を得るまでの時間です)。

上記の「出力」と呼ばれるものは、

NSLog(@"%@", requestDictionary);

したがって、その行の後にこれを試してください:

// Just to be complete
    id ee = [requestDictionary objectForKey:@"error"];
    NSLog(@"error=%@ intValueOfError=%d classOfErrorCode=%@", 
        ee, [ee intValue], NSStringFromClass([ee class]) );

// Where I suspect you may discover something
    id ec = [requestDictionary objectForKey:@"error_code"];
    NSLog(@"errorCode=%@ classOfErrorCode=%@", 
        ec, NSStringFromClass([ec class]) );

ここでは明らかに何かがおかしいので、手に持っているオブジェクトについてもっと知りたいと思っています。上記のことを行えば、予想もしていなかった何かを発見できると思います。

于 2012-08-03T13:23:07.950 に答える