【问题标题】:Replace " in string with \"将字符串中的“替换为\”
【发布时间】:2014-10-24 10:20:16
【问题描述】:

我正在尝试向服务器发送一个字符串。我对其进行编码并使用

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

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

例如

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

应该是有效的

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

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

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

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

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

但它不起作用。我在我的测试电子邮件中收到了“\”。这是我所能得到的。

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

【问题讨论】:

    标签: objective-c json string nsstring expression


    【解决方案1】:

    您应该直接从字典中生成 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];
    }
    

    【讨论】:

    • 谢谢你...我稍微调整了一下你的想法,现在我在我的邮件中发送各种特殊字符:D
    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2014-11-12
    • 2022-09-24
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多