我从服务器端得到以下响应:
{"_playLists":[{"name":"Playlist 1","items":[{"name":"Poza 1","target":"http:\/\/myaudi.fr","url":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/image\/pic1_iphone3.jpg","url_thumb":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/thumb\/pic1_iphone3_thumb.jpg"},{"name":"Poza 2","target":"http:\/\/audifrance.fr","url":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/image\/pic2_iphone3.jpg","url_thumb":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/thumb\/pic2_iphone3_thumb.jpg"}]},{"name":"Playlist 2","items":[{"name":"Poza 3","target":"http:\/\/google.ro","url":null,"url_thumb":null}]}]}
我正试图通过使用:
来访问它SBJSON *parser = [[SBJSON alloc] init];
NSString *responseString = [request responseString];
NSString *json_string = [[NSString alloc] initWithData:responseString encoding:NSUTF8StringEncoding];
NSArray *statuses = [parser objectWithString:json_string error:nil];
但我在这一行得到EXC_BAD_ACCESS
NSString *json_string = [[NSString alloc] initWithData:responseString encoding:NSUTF8StringEncoding];
说变量json_string
不是CFString
。
有人可以帮我解决这个问题并告诉我如何进一步采取行动来访问JSON组件吗?谢谢:)
编辑:
{
items = (
{
name = "Poza 1";
target = "http://myaudi.fr";
url = "http://test.res-novae.fr/sfrplay/upload/image/pic1_iphone3.jpg";
"url_thumb" = "http://test.res-novae.fr/sfrplay/upload/thumb/pic1_iphone3_thumb.jpg";
},
{
name = "Poza 2";
target = "http://audifrance.fr";
url = "http://test.res-novae.fr/sfrplay/upload/image/pic2_iphone3.jpg";
"url_thumb" = "http://test.res-novae.fr/sfrplay/upload/thumb/pic2_iphone3_thumb.jpg";
}
);
name = "Playlist 1";
},
{
items = (
{
name = "Poza 3";
target = "http://google.ro";
url = "<null>";
"url_thumb" = "<null>";
}
);
name = "Playlist 2";
}
答案 0 :(得分:1)
您应该使用其中一个可用的JSON框架,即JSONKit或json-framework,这两个框架都可以很容易地将字符串转换为JSON对象(即NSDictionary
)。
如果您使用的是json-framework,则只需执行以下操作(如果已包含JSON.h
):
NSDictionary *jsonObject = [responseString JSONValue];
答案 1 :(得分:0)
您不需要此行
NSString *json_string = [[NSString alloc] initWithData:responseString encoding:NSUTF8StringEncoding];
responseString已经是一个字符串(而initWithData:期望NSData对象不是NSString)。只需将其直接输入解析器:
NSArray *statuses = [parser objectWithString:responseString error:nil];
有人可以帮我解决这个问题并告诉我如何进一步采取行动 JSON组件?
您现在有一个很好的NSArray NSDictionary对象代表您的JSON数据,您可以访问第一个项目,由
表示{"name":"Playlist 1","items":[{"name":"Poza 1","target":"http:\/\/myaudi.fr","url":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/image\/pic1_iphone3.jpg","url_thumb":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/thumb\/pic1_iphone3_thumb.jpg"},{"name":"Poza 2","target":"http:\/\/audifrance.fr","url":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/image\/pic2_iphone3.jpg","url_thumb":"http:\/\/test.res-novae.fr\/sfrplay\/upload\/thumb\/pic2_iphone3_thumb.jpg"}]}
获取数组中的第一个元素
NSDictionary* dict = [statuses objectAtIndex:0];
字典中的键应为“name”和“items”。 “name”的对象将是NSString,“items”的对象将是一个NSArray,其中包含描述每个项目的更多NSDictionary对象。
答案 2 :(得分:0)
您的行存在问题
NSString *json_string = [[NSString alloc] initWithData:responseString encoding:NSUTF8StringEncoding];
您已将responseString
声明为NSString *responseString = [request responseString];
并且您在分配json_string