2012-04-04 1 views
0

This answer, похоже, показывает, как сделать JSONObject.Создание JSONObject в iOS5

NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]"; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *e = nil; 
NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e]; 
NSLog(@"%@", json); 

Выходной сигнал выглядит как объект json. Но тогда я попробовал следующее:

NSLog(@"%@", [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil ]); 

То, что я вернулся был

< 5b0a2020 7b0a2020 20202269 6422203a 20223122 2c0a2020 2020226e 616d6522 203a2022 41616122 0a20207d 2c0a2020 7b0a2020 20202269 6422203a 20223222 2c0a2020 2020226e 616d6522 203a2022 42626222 0a20207d 0a5d>

Это, похоже, показывает, что это не настоящий JSONObj ЭСТ. Как вы его делаете?

ответ

3

Это может быть реальным JSONObject, но NSLog не знает, как отображать необработанные данные ... "%@" бит NSLog хочет NSString с кодировкой, не NSData.

Есть два пути, которые я могу видеть с головы, чтобы сказать, все ли в порядке.

# 1) использовать метод [isValidJSONObject:]

или

# 2) повторно разобрать объект JSON вы только что создали и посмотреть, если он выйдет так, как вы создали его. Вы можете распечатать NSData делать что-то вроде:

NSError * error = nil; 
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:&error ]; 
if(jsonData == nil) 
{ 
    NSLog(@"error in parsing json data is %@", [error localizedDescription]); 
} else { 
    NSString * jsonString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];  
    NSLog("json data is %@", jsonString); 
} 
+0

Если бы я был NSArray из NSStrings, как бы я присвоить весь массив с ключом, а затем превратить это в JSONObject? – neuromancer

+0

JSONObject - это просто NSArray? – neuromancer

+0

Вы можете создавать объекты JSON через 'NSJSONSerialization' либо из данных, либо из потока (но не из массива или словаря). Вам нужно будет преобразовать массив в 'NSData' для преобразования JSON. Взгляните [на этот связанный вопрос, и вы можете найти ответ, который вы ищете) (http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization). –