0

嗨,我有这个字符串{“数据”:[{“名称”:“Lorena Trujillo”,“id”:“500144123”},{“名称”:“George Arcila”,“id”:“520311359”},{ “名称”:“劳拉维多利亚穆\u00f1oz Rincon”,“id”:“528543677”},{“名称”:“Camilo Andres Santacoloma Mejia”,“id”:“529547832”}],“paging”:{“下一个“: ”https://graph.facebook.com/537223119/friends?access_token=AAAAAAITEghMBAI7cZBdbAHt3ZC24esi4ZA6O6kFdwU1H0ekDmGQGRZCUZAVW3T6W6fzg50jHsdfsdfsfdsfdsfzdixf1RrTFLzV96ZBWXAZDZD&limit=5000&offset=5000&__after_id=1000456456455“}

}

并且您需要提取 [ 和 ] 之间的子字符串我使用下一个代码

NSRange startRange = [strFriends rangeOfString:@"["];
NSRange endRange = [strFriends rangeOfString:@"]"];
NSString *formData = [strFriends  substringWithRange:NSMakeRange(startRange.location,endRange.location)];
NSLog(@"this is the data %@",formData); 

结果是

[ {“名称”:“Lorena Trujillo”,“id”:“500144123”},{“名称”:“George Arcila”,“id”:“520311359”},{“名称”:“Laura Victoria Mu\u00f1oz Rincon", "id": "528543677" }, { "name": "Camilo Andres Santacoloma Mejia", "id": "529547832" }],"pagin

知道为什么这些最后一个字符会出现,“非常感谢页面

4

2 回答 2

2

这是因为startRangelocation 和endRangelocation 都指向字符串中的位置 - 但 subStringWithRange 需要一个位置和一个长度 - 所以您需要计算要提取的字符串的长度。像这样:

NSUInteger dataLength = endrange.location - startRange.location;
NSString *formData = [strFriends  substringWithRange:NSMakeRange(startRange.location,dataLength)];

除此之外,您确实需要一个 JSON 解析器来解析 JSON。挑选出像这样的小子串将是一项繁重的工作并且很脆弱。

于 2012-08-30T19:12:08.930 回答
2

正如评论中提到的 driis,您应该使用JSON 解析器来处理这些数据。要回答您的问题,您正在看到“页面”,因为范围有一个位置和一个长度,而不是 2 个位置。尝试

NSMakeRange(startRange.location,endRange.location - startRange.location)
于 2012-08-30T19:12:16.490 回答