我正在尝试解析Twitter API收到的JSON字符串以获取用户时间线.我正在使用Jastor将JSON响应转换为目标c对象.一切正常,直到我尝试解析实体对象
entities = {
hashtags =();
media = (
{
"display_url" = "pic.twitter.com/...";
"expanded_url" = "http://...";
id = ...;
"id_str" = ...;
indices =(
5,
25
);
"media_url" = "http://...";
"media_url_https" = "https://...";
sizes ={
large ={
h = 765;
resize = fit;
w = 1024;
};
medium ={
h = 448;
resize = fit;
w = 600;
};
small ={
h = 254;
resize = fit;
w = 340;
};
thumb ={
h = 150;
resize = crop;
w = 150;
};
};
type = photo;
url = "http://...";
}
);
urls =();
"user_mentions" = ();
};
Run Code Online (Sandbox Code Playgroud)
即使JSON不是标准的,Jastor似乎也解析了所有这些,但由于"("")"的存在,这个块.你知道如何让Jastor解析这个块吗?或者我是否需要更换库?
谢谢.
对你的问题的输出感到好奇的是它不是JSON格式的字符串.它看起来像是嵌套的NSDictionary和NSArray对象的组合,当您将JSON字符串转换为Objective-C对象时,这是典型的.当您使用NSLog此类对象时,花括号表示NSDictionary对象,括号表示NSArray对象.
所以,它看起来就像你正在显示一个典型的,成功解析的JSON对象.您可以如下解释它,假设上面的输出是通过执行NSLog一些NSDictionary调用生成的,比如说jsonObject:
NSDictionary *entity = [jsonObject objectForKey:@"entities"];
NSArray *media = [entity objectForKey:@"media"];
NSDictionary *media0 = [media objectAtIndex:0];
NSString *display_url = [media0 objectForKey:@"display_url"];
NSArray *sizes = [media0 objectForKey:@"sizes"];
NSDictionary *size0 = [sizes objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
或者,如果使用现代Objective C,只需:
NSDictionary *entity = jsonObject[@"entities"];
NSArray *media = entity[@"media"];
NSDictionary *media0 = media[0];
NSString *display_url = media0[@"display_url"];
NSArray *sizes = media0[@"sizes"];
NSDictionary *size0 = sizes[0];
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |