替换 JSON 字符串中的内容

Replacing stuff in JSON string

为什么我会收到错误消息:

NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"jsonRoster unmasked: %@", jsonString);
NSString *maskedString = [self maskJSON:jsonString withMultipleElementStartString:@"###multipleElementsBegin###" andMultipleEndString:@"###multipleElementsEnd###" andSingleElementStartString:@"###elementBegin###" andSingleElementEndString:@"###elementEnd###"];
NSLog(@"jsonRoster masked: %@", maskedString);

这是错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x600002932400'

但是为什么,字符串还是字典?

根据错误消息 JSONObjectWithData return 编辑了一个 NSDictionary 对象,实际上它实际上是这样的,JSONObjectWithData return 是一个字典或一个数组取决于您的 JSON 结构。所以你通常应该检查 return 类型并妥善处理它。

编辑 要获得 NSString,您可以使用它的 initWithData:encoding: 方法。