gpt4 book ai didi

iphone - 如何从 JSON 中获取数据?

转载 作者:太空狗 更新时间:2023-10-30 04:01:20 25 4
gpt4 key购买 nike

我收到了 JSON 格式的响应,并且过去从未解析过它,所以有人可以帮助我理解这一点。这是我得到的 Json 响应:

推特回复:

(
{
contributors = "<null>";
coordinates = "<null>";
"created_at" = "Tue Nov 29 15:48:35 +0000 2011";
entities = {
hashtags = (
);
media = (
{
"display_url" = "pic.twitter.com/650E1WRY";
"expanded_url" = "http://twitter.com/ashu1702/status/141544088850796545/photo/1";
id = 141544088854990848;
"id_str" = 141544088854990848;
indices = (
22,
42
);
"media_url" = "http://p.twimg.com/AfbdmVBCEAAPJvT.jpg";
"media_url_https" = "https://p.twimg.com/AfbdmVBCEAAPJvT.jpg";
sizes = {
large = {
h = 279;
resize = fit;
w = 215;
};
medium = {
h = 279;
resize = fit;
w = 215;
};
small = {
h = 279;
resize = fit;
w = 215;
};
thumb = {
h = 150;
resize = crop;
w = 150;
};
};
type = photo;
url = "http://t.co/650E1WRY";
}
);
urls = (
);
"user_mentions" = (
);
};
favorited = 0;
geo = "<null>";
id = 141544088850796545;
"id_str" = 141544088850796545;
"in_reply_to_screen_name" = "<null>";
"in_reply_to_status_id" = "<null>";
"in_reply_to_status_id_str" = "<null>";
"in_reply_to_user_id" = "<null>";
"in_reply_to_user_id_str" = "<null>";
place = "<null>";
"possibly_sensitive" = 0;
"retweet_count" = 0;
retweeted = 0;
source = "<a href=\"http://www.apple.com\" rel=\"nofollow\">iOS</a>";
text = "I am in Syria @(null) http://t.co/650E1WRY";
truncated = 0;
user = {
"contributors_enabled" = 0;
"created_at" = "Sun May 01 15:20:52 +0000 2011";
"default_profile" = 1;
"default_profile_image" = 1;
description = "<null>";
"favourites_count" = 0;
"follow_request_sent" = "<null>";
"followers_count" = 0;
following = "<null>";
"friends_count" = 5;
"geo_enabled" = 0;
id = 291164338;
"id_str" = 291164338;
"is_translator" = 0;
lang = en;
"listed_count" = 0;
location = "<null>";
name = "Ashutosh Tiwari";
notifications = "<null>";
"profile_background_color" = C0DEED;
"profile_background_image_url" = "http://a0.twimg.com/images/themes/theme1/bg.png";
"profile_background_image_url_https" = "https://si0.twimg.com/images/themes/theme1/bg.png";
"profile_background_tile" = 0;
"profile_image_url" = "http://a2.twimg.com/sticky/default_profile_images/default_profile_3_normal.png";
"profile_image_url_https" = "https://si0.twimg.com/sticky/default_profile_images/default_profile_3_normal.png";
"profile_link_color" = 0084B4;
"profile_sidebar_border_color" = C0DEED;
"profile_sidebar_fill_color" = DDEEF6;
"profile_text_color" = 333333;
"profile_use_background_image" = 1;
protected = 0;
"screen_name" = ashu1702;
"show_all_inline_media" = 0;
"statuses_count" = 62;
"time_zone" = "<null>";
url = "<null>";
"utc_offset" = "<null>";
verified = 0;
};
}
)

具体来说,我只需要“expanded_url”,我在我的代码中这样做来获取它:

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];// where response data is coming from the call made to twitter timeline_api

NSString * callBackURL = [dict objectForKey:@"expanded_url"];

在执行此操作时出现此错误:

2011-11-29 09:50:31.214 L'Occitane[1119:19d07] -[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x85a50d0
2011-11-29 09:50:31.215 L'Occitane[1119:19d07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x85a50d0'

请帮忙!!!

谢谢,

最佳答案

当转换为 Cocoa Foundation 对象时,JSON 分解为一堆嵌套的 NSArraysNSDictionary 最终导致 NSStringNSNumberNSNull。理想情况下,您可以从 Web 服务的文档向前工作,但您可以从根对象通过 NSLog 打印的描述向后工作。

从你的日志中我可以看到 expanded_url 是一个未命名对象的成员,它是 media 数组中的第一个条目,它是 的成员实体对象。包含 entities 的未命名对象是数组的一部分,这是 JSON 反序列化器将返回的内容。所以你想做类似的事情(如果以长格式写出来进行说明,并且没有任何验证):

NSArray *result = [NSJSONSerialization ...

NSDictionary *firstObject = [result objectAtIndex:0];
NSDictionary *entities = [firstObject objectForKey:@"entities"];
NSArray *media = [entities objectForKey:@"media"];
NSDictionary *relevantObject = [media objectAtIndex:0];
NSString *expandedUrl = [relevantObject objectForKey:@"expanded_url"];

其中的主要风险是 Web 服务可能会为 media 返回一个空数组,导致 objectAtIndex:0 引发异常,或者它会返回一些东西除了作为根对象的数组或以其他方式调整沿线某处的类型。 Objective-C 关于消息传递 nil 的通常规则应该可以使您免于字典的大多数问题。应用多少验证是一个判断电话。

关于iphone - 如何从 JSON 中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com