替换"在带有\"的字符串中

时间:2014-10-24 10:20:17

标签: objective-c json string nsstring expression

我正在尝试将字符串发送到服务器。我编码并使用

将其设置为HTTP请求的主体
[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];

body是字符串。它必须是json格式。

例如

body = [NSString stringWithFormat:@"{\"emailBody\":\"%@\"}",string] ;

应该有效

但我接受来自用户的字符串,它可能包含双引号。因此我必须在其中转义双引号(“)。 例如,如果只想发送一个“

{\"emailBody\":\"\\\"\"}

(harddcoded)从服务器返回肯定响应。

所以我想从原始字符串创建这样一个字符串。我尝试了以下

string = [string stringByReplacingOccurencesOfString:@"\"" withString:@"\\\\\""];

但它没有用。我在我的测试邮件中得到了“。就我能够得到的而言。”

我采取了正确的方法吗?如果有人能指出我正确的方向,我将不胜感激。谢谢

1 个答案:

答案 0 :(得分:2)

您应该直接从字典中生成JSON。这将自动为您处理所有编码:

NSDictionary *body = @{@"emailBody": string};
NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:body options:0 error:&error];

if (!jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    [request setHTTPBody:jsonString];
}