将 JSON 转换为 Dictionary Swift 时出错

Posted

技术标签:

【中文标题】将 JSON 转换为 Dictionary Swift 时出错【英文标题】:error when convert JSON to Dictionary Swift 【发布时间】:2018-03-01 04:37:09 【问题描述】:

你能帮帮我吗? 如果 JSON 带有这样的多行,我将面临一个问题

"\"groupId\":\"58\",\"chat\":\"send 2lines\nsecondline\""

我正在从服务器获取响应并使用此函数进行转换

    let dataDic = self.convertToDictionary(text: (remoteMessage.appData["message"]! as AnyObject) as! String)
    print(dataDic!)

这是我的功能

func convertToDictionary(text: String) -> [String: AnyObject]? 
    if let data = text.data(using: String.Encoding.utf8) 
        do 
            let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:AnyObject]
            return json

         catch 
            print(error.localizedDescription)
        
    
    return nil

但是如果代码有多行,问题就来了,因为它在返回中放了 \n 并且 它给了我

The data couldn’t be read because it isn’t in the correct format 

Error Domain=NSCocoaErrorDomain Code=3840 "Unescaped control character around character 145." UserInfo=NSDebugDescription=Unescaped control character around character 145.

【问题讨论】:

可能和这里一样的问题***.com/questions/39247981/… 您应该使用三重双引号字符串语法以避免手动转义 JSON 字符串中的特殊字符。 let json = """ "groupId":"58","chat":"send 2lines\nsecondline"" """。 developer.apple.com/documentation/swift/string 当我将 JSON 转换为 DICTIONARY 时,会出现退格字符。所以我应该保持这种格式:( 不,退格实际上并不存在。这就是它的显示方式 @StefanR:我不明白这一点以及我将如何在我的代码中处理它。如果您有任何代码示例来制作它。无奈感谢 【参考方案1】:

在解析 JSON 之前,您应该在“\n”之前添加一个额外的“\”。尝试使用“replacingOccurencesOf”功能。 这样你的 JSON 在解析之前就被格式化了。

【讨论】:

以上是关于将 JSON 转换为 Dictionary Swift 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JayRock 将 Json 字符串转换为带有 Dictionary 的对象

如何将 JSON 转换为 Swift Dictionary 以进行 HTTP POST

无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“System.Collections.Generic.Dictionary`2[System.String,S

如何将 Optional<Dictionary<String, Any>> 转换为 Dictionary<String, Any> 以发送带有 json 参数的 A

如何将 swift Dictionary 转换为 NSDictionary

读取本地json文件,并转换为dictionary