Objective c 替换JSON字符串中的内容

Objective c 替换JSON字符串中的内容,objective-c,json,nsjsonserialization,Objective C,Json,Nsjsonserialization,为什么我会遇到这样的错误: NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSLog(@"jsonRoster unmasked: %@", jsonString); NSString *maskedString = [self maskJSON:jsonString withMultipleElementStartString:@"###multipleElem

为什么我会遇到这样的错误:

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);
以下是错误:

由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\uu nsyi stringByReplacingOccurrencesOfString:withString::无法识别 选择器已发送到实例0x600002932400'


但是为什么字符串仍然是一个字典呢?

根据错误消息
JSONObjectWithData
返回了一个
NSDictionary
对象,实际上是这样,
JSONObjectWithData
根据JSON结构返回字典或数组。因此,您通常应该检查返回类型并正确处理它

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

根据错误消息
JSONObjectWithData
返回了一个
NSDictionary
对象,实际上它是这样的,
JSONObjectWithData
根据JSON结构返回一个字典或数组。因此,您通常应该检查返回类型并正确处理它

编辑
要获取一个
NSString
可以使用它的
initWithData:encoding:
方法。

hm好的,但是如何将JSON作为一个字符串获取呢?所以我可以向我们的服务器发送一个字符串?通过使用
NSString*jsonString=[[NSString alloc]initWithData:data encoding:NSUTF8String]
,您可以。嗯,好的,但是我如何才能将JSON作为一个字符串来获取?所以我可以向我们的服务器发送一个字符串?通过使用
NSString*jsonString=[[NSString alloc]initWithData:data encoding:NSUTF8String]
,您可以。这是作为JSON文件开始的吗?如果是这样的话,你为什么不直接从文件中读出来呢?或者您还希望对文件进行验证吗?正如schmidt9所提到的,如果您希望从数据中获得字符串,则使用NSString的initWithData方法将数据转换为字符串。是的,json传统上是一个字符串,但是JSONObjectWithData将为您提供一个可以使用的对象这是作为json文件开始的吗?如果是这样的话,你为什么不直接从文件中读出来呢?或者您还希望对文件进行验证吗?正如schmidt9所提到的,如果您希望从数据中获得字符串,则使用NSString的initWithData方法将数据转换为字符串。是的,json传统上是一个字符串,但JSONObjectWithData将为您提供一个可以使用的对象