我有以下字符串。但我需要通过这个“jsonp1343930692”将它们分开并再次分配它们NSString
。我怎么能这样?我可以将它们分隔为NSArray
,但我不知道如何分隔到NSString
。
jsonp1343930692("snapshot":[{"timestamp":1349143800,"data":[{"label_id":10,"lat":29.7161,"lng":-95.3906,"attr":{"ozone_level":37,"exp":"IN","gridpoint":"29.72:-95.39"}},{"label_id":10,"lat":30.168456,"lng":-95.50448}]}]})
jsonp1343930692("snapshot":[{"timestamp":1349144700,"data":[{"label_id":10,"lat":29.7161,"lng":-95.3906,"attr":{"ozone_level":37,"exp":"IN","gridpoint":"29.72:-95.39"}},{"label_id":10,"lat":30.168456,"lng":-95.50448,"attr":{"ozone_level":57,"exp":"IN","gridpoint":"30.17:-95.5"}},{"label_id":10,"lat":29.036944,"lng":-95.438333}]}]})
答案 0 :(得分:1)
查看NSJSONSerialization类,将其转换为可以处理的Cocoa集合。
答案 1 :(得分:1)
你的字符串中的jsonp1343930692
前缀是奇怪的:我不知道你的字符串来自哪里,但它似乎是一些带有这个奇怪前缀的JSON字符串,没有理由在那里。这里最好的方法是检查这个前缀是否正常,例如,如果从WebService获取此字符串,则返回此奇数前缀可能是WebService错误。
无论如何,如果你想删除字符串的jsonp1343930692
前缀,你有多种选择:
检查前缀是否存在,如果是,请从原始字符串中删除正确数量的字符:
NSString* str = ... // your string with the "jsonp1343930692" prefix
static NSString* kStringToRemove = @"jsonp1343930692";
if ([str hasPrefix:kStringToRemove])
{
// rebuilt a string by only using the substring after the prefix
str = [str substringFromIndex:kStringToRemove.length];
}
使用jsonp1343930692
字符串作为分隔符
NSString* str = ... // your string with the "jsonp1343930692" prefix
static NSString* kStringToRemove = @"jsonp1343930692";
NSArray* parts = [str componentsSeparatedByString:kStringToRemove];
str = [parts componentsJoinedByString:@""];
用空字符串替换每次出现的jsonp1343930692
。
NSString* str = ... // your string with the "jsonp1343930692" prefix
static NSString* kStringToRemove = @"jsonp1343930692";
str = [str stringByReplacingOccurrencesOfString:kStringToRemove withString:@""];
所以简而言之,根据你想要做什么,你有很多可能性:)
当然,一旦删除了奇怪的jsonp1343930692
前缀,就可以反序列化JSON字符串以获取JSON对象(使用某些第三方库,如SBJSON
或使用{{1} iOS5及更高版本等)