Значение name
сама строка JSON.
Преобразовать строку в NSData
экземпляр (используя правильную кодировку строки - я использую только NSUTF8StringEncoding
здесь в качестве примера, так как она обычно работает в большинстве случаев):
Swift:
var name : NSString = who[0]["name"] as! NSString
var nameAsData : NSData? = name.dataUsingEncoding(NSUTF8StringEncoding)
объективно- с:
NSString *name = who[0][@"name"];
NSData *nameAsData = [name dataUsingEncoding:NSUTF8StringEncoding];
Затем включите эти данные в объект JSON (массив в данном случае) с помощью этого:
Swift:
var error : NSError?
var names : NSArray = NSJSONSerialization.JSONObjectWithData(nameAsData!, options: nil, error: &error) as! NSArray;
if (error != nil) {
NSLog("Error reading JSON: %@", error!.localizedDescription)
}
Objective-C:
NSError *__autoreleasing error;
NSArray *names = [NSJSONSerialization JSONObjectWithData:nameAsData options:kNilOptions error:&error];
if (error) {
NSLog(@"Error reading JSON: %@", error.localizedDescription);
}
Так что теперь, если не произошла ошибка разбора JSON в nameAsData
, names
должен быть NSArray
NSDictionary
из объектов. После этого вы можете делать все, что вы хотите с ним - например, чтобы получить "Джон" или "Жак" вы могли бы сделать это:
Swift:
NSLog("first name: %@", names[0]["name"] as! NSString) // John
NSLog("second name: %@", names[1]["name"] as! NSString) // Jacques
Objective-C:
NSLog(@"first name: %@", names[0][@"name"]); // John
NSLog(@"second name: %@", names[1][@"name"]); // Jacques
У вас есть то, что правильно называют «встроенным JSON». Он должен проходить через парсер JSON второй раз. –