1

如果我在这里遗漏了什么,有人可以告诉我...我正在尝试从数据流中解析单个 JSON 对象。数据流缓冲在常规的 NSString 中,各个 JSON 对象由 EOL 标记描述。

if([dataBuffer rangeOfString:@"\n"].location != NSNotFound) {
  NSString *tmp = [dataBuffer stringByReplacingOccurrencesOfString:@"\n" withString:@"NEWLINE"];
  NSLog(@"%@", tmp);
 }

上面的代码按预期输出“...}NEWLINE{...”。但是,如果我将上面 if 语句中的 @"\n" 更改为 @"}\n",我什么也得不到。

4

1 回答 1

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 库即可。'}' 后面很容易有一个尾随空格,这会导致您观察到的问题。

于 2010-06-11T01:28:49.920 回答