NSString分离-iOS

时间:2012-10-02 11:59:57

标签: ios nsstring

我有以下字符串。但我需要通过这个“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}]}]})

2 个答案:

答案 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及更高版本等)