TouchJSON シリアライゼーションに関する質問と回答を読みましたが、まだ機能しません。
サンプル データを使用して NSDictionary を作成し、JSONTouch シリアライザーを使用して NSDictionary を JSON に変換しました。ただし、NSData オブジェクト 'theJSONData' をログに記録すると、結果として次のようになります。
<7b223131 31353535 34343434 223a2250 ... 65227d>
さらに、この「theJSONData」データを Web サービス (JSON を想定している) に送信すると、次のように返されます。
2011-07-31 18:48:46.572 街灯[7169:207] シリアル化エラー: (null)
2011-07-31 18:48:46.804 街路灯[7169:207] returnData: (null)
2011-07-31 18:48:46.805 Street Lights[7169:207] エラー: エラー Domain=kJSONScannerErrorDomain Code=-201 「配列をスキャンできませんでした。配列は '[' 文字で開始されていません。」UserInfo=0x4d51ab0 {snippet=!HERE>!?xml version="1.0" 、location=0、NSLocalizedDescription=アレイをスキャンできませんでした。'[' 文字で始まっていない配列、文字 = 0、行 = 0}
私は何を間違っていますか?JSON NSData オブジェクト 'theJSONData' は、Web サービスに送信する前に別の型に変換する必要がありますか? 私が見逃している別のステップはありますか?
// Create the dictionary
NSDictionary *outage = [[NSDictionary alloc] initWithObjectsAndKeys:
@"YCoord", @"12678967.543233",
@"XCoord", @"12678967.543233",
@"StreetLightID", @"666",
@"StreetLightCondition", @"Let's just say 'BAD'",
@"PhoneNumber", @"1115554444",
@"LastName", @"Smith",
@"Image",@"",
@"FirstName", @"Dawn",
@"Comments", @"Pole knocked down",
nil];
NSError *error = NULL;
// Serialize the data
NSData *theJSONData = [[CJSONSerializer serializer] serializeDictionary:outage error:&error];
NSLog(@"theJSONData: %@", theJSONData);
NSLog(@"Serialization Error: %@", error);
// Set up the request and send it
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://24.52.35.127:81/StreetLight/StreetlightService/CreateStreetLightOutage"]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: theJSONData];
// Deserialize the response
NSData *returnData = [ NSURLConnection sendSynchronousRequest: request returningResponse: nil error:&error];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];
NSData *theReturnData = [returnString dataUsingEncoding:NSUTF8StringEncoding];
id theObject = [[CJSONDeserializer deserializer] deserializeAsArray:theReturnData error:&error];
NSLog(@"returnData: %@",theObject);
NSLog(@"Error: %@", error);