将 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