替换 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:
方法。
为什么我会收到错误消息:
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:
方法。