Я прочитал вопросы и ответы, связанные с сериализацией TouchJSON, и до сих пор не могу заставить ее работать.
Я создаю NSDictionary с образцами данных и использовал сериализатор JSONTouch для преобразования NSDictionary в JSON.Однако, когда я регистрирую объект NSData 'theJSONData', он дает мне следующее:
<7b223131 31353535 34343434 223a2250 ... 65227d>
Дополнительно,когда я отправляю эти данные 'theJSONData' в веб-службу (которая ожидает JSON), я получаю следующее сообщение:
2011-07-31 18: 48: 46.572 Уличные фонари [7169: 207] Ошибка сериализации:(ноль)
2011-07-31 18: 48: 46.804 Уличные фонари [7169: 207] returnData: (ноль)
2011-07-31 18: 48: 46.805 Уличные фонари [7169: 207] Ошибка: Ошибка Domain = kJSONScannerErrorDomain Code = -201 "Не удалось просканировать массив. Массив не запущен символом '['." UserInfo = 0x4d51ab0 {snippet =! HERE> !? версия xml= "1.0", location = 0, NSLocalizedDescription = Не удалось отсканировать массив.Массив не начинается с символа '[', символ = 0, строка = 0}
Что я делаю не так?Нужно ли преобразовывать объект JSON NSData 'theJSONData' в другой тип, прежде чем я отправлю его в веб-службу?Я пропускаю еще один шаг?
// 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);