的值name
本身就是一个 JSON 字符串。
将字符串转换为NSData
实例(使用正确的字符串编码 - 我在这里仅用NSUTF8StringEncoding
作示例,因为它通常适用于大多数情况):
斯威夫特:
var name : NSString = who[0]["name"] as! NSString
var nameAsData : NSData? = name.dataUsingEncoding(NSUTF8StringEncoding)
目标-C:
NSString *name = who[0][@"name"];
NSData *nameAsData = [name dataUsingEncoding:NSUTF8StringEncoding];
然后使用以下命令将该数据转换为 JSON 对象(在本例中为数组):
迅速:
var error : NSError?
var names : NSArray = NSJSONSerialization.JSONObjectWithData(nameAsData!, options: nil, error: &error) as! NSArray;
if (error != nil) {
NSLog("Error reading JSON: %@", error!.localizedDescription)
}
目标-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
。然后你可以用它做任何你想做的事情——例如,要得到“John”或“Jacques”,你可以这样做:
迅速:
NSLog("first name: %@", names[0]["name"] as! NSString) // John
NSLog("second name: %@", names[1]["name"] as! NSString) // Jacques
目标-C:
NSLog(@"first name: %@", names[0][@"name"]); // John
NSLog(@"second name: %@", names[1][@"name"]); // Jacques