将JSON数据的NSString转换为NSArray

Bra*_*don 14 iphone json objective-c ios

我有一个NSString以a JSON的形式存储数组NSString.被NSString调用colorArray的值为:

[{ "color":"Red" },{ "color":"Blue" },{ "color":"Yellow"}];
Run Code Online (Sandbox Code Playgroud)

我还有一个tableview,我想导入数组,以填充表.如果我将数据加载tableData到如下所示的数组中,该表有效,但我无法弄清楚如何将其NSString转换为可用于填充tableData如下所示的数组的数组...

有人有想法吗?非常感谢!

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Initialize table data
    tableData = [NSArray arrayWithObjects:@"Red", @"Blue", @"Yellow", nil];
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 42

// Your JSON data:
NSString *colorArray = @"[{ \"color\":\"Red\" },{ \"color\":\"Blue\" },{ \"color\":\"Yellow\"}]";
NSLog(@"colorArray=%@", colorArray);

// Convert to JSON object:
NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[colorArray dataUsingEncoding:NSUTF8StringEncoding]
                                                      options:0 error:NULL];
NSLog(@"jsonObject=%@", jsonObject);

// Extract "color" values:
NSArray *tableData = [jsonObject valueForKey:@"color"];
NSLog(@"tableData=%@", tableData);
Run Code Online (Sandbox Code Playgroud)

输出:

colorArray=[{ "color":"Red" },{ "color":"Blue" },{ "color":"Yellow"}]
jsonObject=(
        {
        color = Red;
    },
        {
        color = Blue;
    },
        {
        color = Yellow;
    }
)
tableData=(
    Red,
    Blue,
    Yellow
)

最后一步使用的特殊功能-[NSArray valueForKey:] 返回一个数组,该数组包含valueForKey:使用每个数组对象上的键调用的结果.