我无法从我的 json 中获取所有 URL。此代码仅显示 json 的第一个 URL
Posted
技术标签:
【中文标题】我无法从我的 json 中获取所有 URL。此代码仅显示 json 的第一个 URL【英文标题】:i can't get all the URL from my json. this code show only first URL of json 【发布时间】:2014-03-06 12:35:26 【问题描述】:- (void)viewDidLoad
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://www.xovak.com/json_logo.php"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSDictionary *Logos = [[[json valueForKey:@"logos"]objectAtIndex:0]mutableCopy];
NSMutableArray *img = [[NSMutableArray alloc]init];
for (id item in Logos)
[img addObject:[Logos objectForKey:@"image_file"]];
NSLog(@"%@",img);
【问题讨论】:
@Wain 将上面的 url 复制并粘贴到浏览器中,您将获得 json 数据 @iDev,它会一直在那个链接上吗?如果没有...,这个问题将来会有多大用处? 是的,你说得对,但提问者是我们社区的初学者,他不知道社区的概念。 @Wain 【参考方案1】:你确定Logos
不应该是NSArray
吗?至少,从您的 JSON 对象看是这样的。
改为这样做:
NSURL *url = [NSURL URLWithString:@"http://www.xovak.com/json_logo.php"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSArray *Logos = [[json valueForKey:@"logos"] mutableCopy];
NSMutableArray *img = [[NSMutableArray alloc]init];
for (NSDictionary *item in Logos)
[img addObject:[item objectForKey:@"image_file"]];
NSLog(@"%@",img);
【讨论】:
【参考方案2】:从 JSON 响应中获取所有 imagFile 的另一种方法。请检查一下。
NSURL *url = [NSURL URLWithString:@"http://www.xovak.com/json_logo.php"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSMutableArray *img = [[NSMutableArray alloc]init];
NSArray *listOfURL = [[NSArray alloc] init];
NSArray *websiteDetails = (NSArray *) [json objectForKey:@"logos"];
for(int count=0; count<[websiteDetails count]; count++)
NSDictionary *websiteInfo = (NSDictionary *) [websiteDetails objectAtIndex:count];
NSString *imagefile = (NSString *) [websiteInfo objectForKey:@"image_file"];
if([imagefile length]>0)
NSLog(@"Imagefile URL is: %@",imagefile);
[img addObject:imagefile];
listOfURL = img;
---------// Add This Method in TableView Cell For Row at IndexPath Method//-----------------
// Logic For Downloading Image From URL and Show in TableviewCell
//get a dispatch queue
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//this will start the image loading in bg
dispatch_async(concurrentQueue, ^
NSURL *url = [NSURL URLWithString:[listOfURL objectAtIndex:indexPath.row]];
NSData *image = [[NSData alloc] initWithContentsOfURL:url];
//this will set the image when loading is finished
dispatch_async(dispatch_get_main_queue(), ^
cell.imageview.image = [UIImage imageWithData:image];
);
);
【讨论】:
在 if([session..]) 条件会话中是什么意思?? 这只是我的单吨类,我在其中为所有类添加了所有方法。我的意思只是检查字符串是否为 NULL。谢谢指出。 我想在imageview plzz中显示这个数组中的图像......来自你身边的任何建议对这个有帮助.. 请检查我编辑的答案以显示来自 URL 的图像并将其显示在 UITableview 中。 To All..如果我的回答有误,请告诉我。为什么不写任何cmets就对我的答案投反对票。不是好办法。长大成人。【参考方案3】:您只在Logos
中添加了一项。另外,它不应该是NSMutableDictionary
,而是NSArray
。
另一方面,您在 Logos
中循环播放的项目 实际上是 NSDictionary
s。
所以,您的代码现在应该是:
NSArray *Logos = [json valueForKey:@"logos"];
NSMutableArray *img = [[NSMutableArray alloc]init];
for (NSDictionary *item in Logos)
[img addObject:[item objectForKey:@"image_file"]];
NSLog(@"%@",img);
【讨论】:
【参考方案4】:将NSDictionary *Logos = [[[json valueForKey:@"logos"]objectAtIndex:0]mutableCopy];
替换为NSArray *Logos = [[json valueForKey:@"logos"] mutableCopy];
以获取所有对象。
【讨论】:
以上是关于我无法从我的 json 中获取所有 URL。此代码仅显示 json 的第一个 URL的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Klaxon 从我的 JSON 文件中的两个数组中获取第一个图像 URL?
我无法使用此编码从我的 SD 卡中获取歌曲。我可以这样做还是需要 Content Provider 这样做
如何在 Vue 中使用 axios 检索 JSON Web 令牌?