私は iPhone 用のネイティブ アプリケーションを作成しています。
AFNetworking を使用して (POST で) 要求し、JSON 応答を処理します。
しかし、JSON 応答がより複雑になると気付きました。
{
"isFound": "YES",
"timestamp": "2013-06-12 22:46:47",
"screenTitle": "Perla Review",
"placeName": "Perla",
"placeUniqueId": "101",
"placeCategory": "PUB",
"username": "@jim",
"userImgURL": "",
"gender": "male",
"infoMsg": "TBD",
"youLike": "Like",
"likesInfoMsg": "",
"revInfoList": [
{
"type": 0,
"data": "",
"text": ""
},
{
"type": 1,
"data": "2",
"text": ""
},
{
"type": 2,
"data": "3",
"text": ""
}
],
"commentsList": []
}
次に、AFNetworking は、サブ配列 (revInfoList & commentsList) の読み取りと構築に失敗します。
何か間違ったことをしていますか、それとも AFNetworking はそのような json 構造をサポートしていませんか?
データを要求して応答を処理するための私の目的の C コードは次のとおりです。
static NSString *const myAPIBaseURL = @"http://somedomain.com/api/";
NSURL *baseURL = [NSURL URLWithString:[NSString stringWithFormat:myAPIBaseURL]];
NSString *reqPath = @"review/review_fullinfo";
// prepare params
NSString *reqData_loginUsername = [[[Storage_Modal alloc] init] getLoginUsername];
NSString *reqData_currentCoordinatesLat = [[NSNumber numberWithDouble:[appDelegateInst.myCurrentLocation coordinate].latitude] stringValue];
NSString *reqData_currentCoordinatesLon = [[NSNumber numberWithDouble:[appDelegateInst.myCurrentLocation coordinate].longitude] stringValue];
NSString *reqData_reviewUniqueId = reviewUniqueId;
NSDictionary *parameters = [[NSDictionary alloc] initWithObjectsAndKeys:
@"json", @"format",
reqData_loginUsername, @"loginUsername",
reqData_currentCoordinatesLat, @"currentCoordinatesLatitude",
reqData_currentCoordinatesLon, @"currentCoordinatesLongitude",
reqData_reviewUniqueId, @"reviewUniqueId",
nil];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
[client setDefaultHeader:@"Accept" value:@"application/json"];
[client postPath:reqPath parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *xxx = responseObject;
// 'xxx' contains all the top level keys and values, but the sub arrays are empty... why?
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"SERVER ERROR: %@", error);
}
**注: Objective-C コードに構文エラーがある場合はご容赦ください。複数の関数からコードを収集する必要がありました。
ありがとうございました。