我正在尝试获取" items.snippet.title"的内容。来自服务器上的JSON文件。(Getting JSON Data
)
但我会得到的内容是日语和unicode逃脱
所以我使用Converting Text
转换了文字。
``Getting JSON Data`` NSString *origin = [NSString stringWithFormat: @"URLIncluding%@",videoID]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:origin]]; NSData *json = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSArray *array = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil];`enter code here` NSString *titleConvert=[array valueForKeyPath:@"items.snippet.title"]; ``Converting Text`` NSString* esc1 = [titleConvert stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"]; NSString* esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; NSString* quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""]; NSData* data = [quoted dataUsingEncoding:NSUTF8StringEncoding]; NSString* unesc = [NSPropertyListSerialization propertyListFromData:data mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL]; assert([unesc isKindOfClass:[NSString class]]); NSLog(@"Output = %@", unesc);
但是我有错误说
-[__NSArrayI stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x7f99a8dc5e70
任何人都知道解决方案吗?
答案 0 :(得分:0)
看起来路径“items.snippet.title”返回一个数组。 items
键可能是JSON数据中的数组。
答案 1 :(得分:0)
在数组上调用valueForKeyPath
会返回一个数组。它不能是任何其他方式,因为您没有指定索引到数组的方式/位置。您需要使用特定索引或循环处理数组,然后导航键路径以获取字符串数据。
答案 2 :(得分:0)
当JSON返回数组时:使用快速迭代迭代数组,例如
for (NSDictionary* dict in array)
当您有字典时:使用订阅语法访问元素,例如
NSString* aString = dict [@"title"];
请勿使用以"值"开头的方法。你不明白他们做了什么。不,你不是,因为如果你这样做,你就不会在这里提问。他们有时可能会做你想做的事情,然后可能会导致可怕的错误。除此之外,他们很慢:-(
错误信息应该是显而易见的:你认为有一些东西是NSString,但实际上它是一个NSArray。这是你的错。向NSArray发送NSString消息崩溃。
顺便说一句。你有一个阵列。是什么让你认为它只有一个元素?拥有一个数组将是毫无意义的。编写可以处理多个数组元素的代码。