我得到这样的JSON格式:
stream( { posts: [{CHANNEL: {ios: "(format=m3u8-aapl).m3u8"} }]})
我想得到的是" ios"的数组。 这是我的代码:
id jsonObjects = [NSJSONSerialization JSONObjectWithData:
jsonSource options:NSJSONReadingMutableContainers error:nil];
for (NSDictionary *dataDict in jsonObjects) {
NSArray *ios_data = [[[dataDict objectForKey:@"posts"] objectForKey:@"CHANNEL"] objectForKey:@"ios"];
NSLog(@"%@",ios_data);
dict = [NSDictionary dictionaryWithObjectsAndKeys:ios_data, ios,nil];
}
但它返回NULL,有什么问题呢?
答案 0 :(得分:3)
你的“JSON”:
stream( { posts: [{CHANNEL: {ios: "(format=m3u8-aapl).m3u8"} }]})
不是JSON。您可以尝试通过http://jsonlint.com/之类的验证程序运行它来测试它。
此外,您应该创建一个NSError引用来传入而不是nil
,这样NSJSONSerialization可以为您提供一个错误对象。这将有助于您的调试。
以下是 有效JSON时数据的示例:
{
"stream": [
{
"posts": [
{
"CHANNEL": {
"ios": "(format=m3u8-aapl).m3u8"
}
}
]
}
]
}
(我将其分开以便更清晰,但解析时不需要间距。)
答案 1 :(得分:0)
一旦你的阵列持有“帖子”,你就可以这样深入了解:
NSArray *fileData = [myDic1 valueForKeyPath:@"posts.CHANNEL"];
然后像这样访问:
for (int i=0; i < [clientFileData count]; i++) {
NSDictionary *myDictionary = [fileData objectAtIndex:i];
]
另外,除非我错了,否则您的JSON文件似乎格式不正确。
答案 2 :(得分:0)
得到您的回复:
NSDictionary *dictionaryData = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
正确的JSOn应该是这样的
{
"posts":[
{
"CHANNEL":{
"ios":"(format=m3u8-aapl).m3u8"
}
}
]
}
获取正确的JSON格式,然后尝试解析它。你做错了一件事是 POST 是一个数组。