有人可以告诉我,如果我在这里遗漏了一些东西......我正在尝试从数据流中解析单个JSON对象。数据流在常规NSString中缓冲,并且各个JSON对象由EOL标记描绘。
if([dataBuffer rangeOfString:@"\n"].location != NSNotFound) {
NSString *tmp = [dataBuffer stringByReplacingOccurrencesOfString:@"\n" withString:@"NEWLINE"];
NSLog(@"%@", tmp);
}
上面的代码按预期输出“...} NEWLINE {...”。但如果我将上面if语句中的@“\ n”更改为@“} \ n”,我什么也得不到。
答案 0 :(得分:2)
为什么不使用 - (NSArray *)componentsSeparatedByString:(NSString *)separator
?你可以给它一个@"\n"
的分隔符,结果将是一个方便的字符串数组,代表你可以迭代的各个JSON字符串。
if([dataBuffer rangeOfString:@"\n"].location != NSNotFound) {
NSArray* JSONstrings = [dataBuffer componentsSeparatedByString:@"\n"];
for(NSString* oneString in JSONstrings)
{
// here's where you process individual JSON strings
}
}
如果你弄乱终止'}',你可能会使JSON数据无效。打破它并将其传递给JSON库。在'}'之后很容易出现一个尾随空格,导致你正在观察的问题。