首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSDictionary到JSON与NSJSONSerialization问题

NSDictionary到JSON与NSJSONSerialization问题
EN

Stack Overflow用户
提问于 2014-07-14 23:34:55
回答 3查看 3.5K关注 0票数 0

我有一个NSDictionary (params),它包含以下数据:

代码语言:javascript
运行
复制
{
    deviceType = iPhone;
    ordersActionList = ({
            endDate = "07/14/2014 14:32";
            orderId = 2807171;
            reason = "Some reason";
        }
    );
}

当我使用NSJSONSerialization解析上面的内容时

代码语言:javascript
运行
复制
NSError *err;
NSData *jsonData =[NSJSONSerialization dataWithJSONObject:params options:0 error:&err]; 

它将转义字符添加到endDate中,endDate如下所示:

代码语言:javascript
运行
复制
 `"endDate": "07\/14\/2014 14:32"`

这是不正确的,有人能建议我在使用NSJSONSerialization序列化时如何避免JSON中的转义字符

编辑:这是我目前的工作,但我不喜欢这样做,我希望有一个更好的解决方案:

代码语言:javascript
运行
复制
-(NSData*) converToNSData:(NSDictionary *)params
{
    NSError * err;
    NSData *jsonData =[NSJSONSerialization dataWithJSONObject:params options:0 error:&err];

    NSString *jsonStr1 = [NSString stringWithUTF8String:[jsonData bytes]];
    jsonStr1 = [jsonStr1 stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"];

    NSData *jsonData2 =[jsonStr1 dataUsingEncoding:NSUTF8StringEncoding];

    return jsonData2;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-14 23:49:57

您可以这样做,但是如果您的数据有两个反斜杠,它们将被删除。如果您可以保证您的数据没有两个反斜杠,这是可以的。

代码语言:javascript
运行
复制
NSString *newString = [[yourDict objectForKey:@"endDate"] 
stringByReplacingOccurrencesOfString:@"\\" withString:@""];
票数 0
EN

Stack Overflow用户

发布于 2014-07-14 23:52:13

如果您说的是避免在约会中转义斜杠,那么NSJSONSerialization无法做到这一点。但是,请注意,生成的JSON数据是完全有效的,如果反序列化它,您将得到原始数据。

如果仍然希望删除反斜杠,则必须将结果转换为NSString,并执行搜索/替换操作。

相关:how to prevent NSJSONSerialization from adding extra escapes in URL

票数 3
EN

Stack Overflow用户

发布于 2017-09-14 08:57:15

代码语言:javascript
运行
复制
   var returnString:String?
    do
    {
        let jsonData = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions.prettyPrinted)

        if let json = String(data: jsonData, encoding: .utf8) {
            returnString=json.replacingOccurrences(of: "\\", with: "")
        }

    }
    catch {
        print("something went wrong with parsing json")
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24747694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档