-1

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

2 回答 2

1

查看NSJSONSerialization类,将其转换为您可以处理的 Cocoa 集合。

于 2012-10-02T12:04:08.343 回答
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:@""];
    

所以简而言之,你有很多可能性,具体取决于你想要做什么:)

当然,一旦你删除了奇怪的前缀,你就可以反序列化你的 JSON 字符串以获得一个 JSON 对象(使用jsonp1343930692一些第三方库,如iOS5 及更高版本等)SBJSONNSJSONSerializer

于 2012-10-02T12:10:58.157 回答