将 JSON feed 转换为 NSDictionary
其中 JSON_CATEGORY_DATA_URL_STRING
是我的提要 URL,返回结果如下:
[
{
"group":"For Sale",
"code":"SSSS"
},
{
"group":"For Sale",
"category":"Wanted",
"code":"SWNT"
}
]
我似乎无法从以下代码中获得一个不错的 NSDictionary
(或 NSArray
) :
+ (NSDictionary *)downloadJSON
{
NSDictionary *json_string;
NSString *dataURL = [NSString stringWithFormat:@"%@", JSON_CATEGORY_DATA_URL_STRING];
NSLog(@"%@",dataURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:dataURL]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
json_string = [[[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]autorelease];
NSDictionary *json_dict = (NSDictionary *)json_string;
NSLog(@"json_dict\n%@",json_dict);
NSLog(@"json_string\n%@",json_string);
return json_string;
}
我读过很多关于这方面的文章,但我不明白。
Where JSON_CATEGORY_DATA_URL_STRING
is my feed URL, which returns fine as:
[
{
"group":"For Sale",
"code":"SSSS"
},
{
"group":"For Sale",
"category":"Wanted",
"code":"SWNT"
}
]
I cannot seem to get a nice NSDictionary
(or NSArray
) out of the following code:
+ (NSDictionary *)downloadJSON
{
NSDictionary *json_string;
NSString *dataURL = [NSString stringWithFormat:@"%@", JSON_CATEGORY_DATA_URL_STRING];
NSLog(@"%@",dataURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:dataURL]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
json_string = [[[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]autorelease];
NSDictionary *json_dict = (NSDictionary *)json_string;
NSLog(@"json_dict\n%@",json_dict);
NSLog(@"json_string\n%@",json_string);
return json_string;
}
I've read many posts on this, but am not getting it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在 IOS5 中,您可以使用 NSJSONSerialization 来序列化 JSON。
With IOS5 you can use NSJSONSerialization for serializing the JSON.
您不能只将字符串转换为字典并期望它解析 JSON。您必须使用 JSON 解析库来获取该字符串并将其转换为字典。
You can't just cast a string as a dictionary and expect it to parse the JSON. You must use a JSON parsing library to take that string and convert it into a dictionary.
我制作了一个课程,使这项任务变得更容易。它使用 iOS 5 的 NSJSONSerialization。从 github 此处克隆它。
I made a class that makes this task easier. It uses iOS 5's NSJSONSerialization. Clone it from github here.
您需要使用 JSON 解析器。这是编辑后的代码,
这应该是获取 NSDictionary 的代码。但你的 json 字符串是一个数组,所以改为使用 .
编辑:
您需要使用 JSON.framework 来调用 JSONValue 方法。
您还需要返回
json_dict
而不是json_string
因为json_string
是NSString
类型而不是NSDictionary< /code> 或
NSArray
。并且不要自动释放它,因为它是你的类变量
You need to use JSON parser. here is the edited code
this should be the code to get the NSDictionary. but you json string is an array so instead use .
Edit:
you need to use JSON.framework to call JSONValue method.
also you need to return
json_dict
instead ofjson_string
asjson_string
is ofNSString
type and notNSDictionary
orNSArray
.and dont autorelease it, as it is your class variable
创建方法来获取 json 数据。在 urlwithstring 中传递您的 url。
在任何地方调用 fetchjson 方法。
[NSThread detachNewThreadSelector:@selector(fetchdata) toTarget:self withObject:nil];
create method to fetchjson data.Pass your url in urlwithstring.
call fetchjsonmethod in anywhere.
[NSThread detachNewThreadSelector:@selector(fetchdata) toTarget:self withObject:nil];