如何在Swift 4中从字典创建JSON?
发布时间:2020-12-14 04:36:19 所属栏目:百科 来源:网络整理
导读:编辑:我已经在SO上阅读了相同问题的其他答案,但我无法获得所需的输出.我尝试过其他问题中提出的许多变化,但它不起作用. 我有一个JSON剪切,当我打开websocket时需要将其添加为正文. sender: "system1@example.com",recipients:"system2@example.com",data: {
编辑:我已经在SO上阅读了相同问题的其他答案,但我无法获得所需的输出.我尝试过其他问题中提出的许多变化,但它不起作用.
我有一个JSON剪切,当我打开websocket时需要将其添加为正文. sender: "system1@example.com",recipients:"system2@example.com",data: { text: "Test Message" }, 所以使用Swift我做了以下, var messageDictionary : [String: Any] = [ "sender": "system1@example.com","recipients":"system2@example.com","data": [ "text": "Test Message" ],] do { let jsonData = try JSONSerialization.data(withJSONObject: messageDictionary,options: .prettyPrinted) let jsonString = String(data: jsonData,encoding: String.Encoding.ascii) socket.write(string: jsonString!) print(jsonString) } catch { print(error.localizedDescription) } 当我打印jsonString时,我明白了 Optional("{n "sender" : "system1@example.com",n "data" : {n "text" : "Test Message"n },n "recipients" : "system2@example.com"n}") 作为控制台输出.我希望上面的代码片段格式化为JSON. 编辑2: let jsonData = try JSONSerialization.data(withJSONObject: messageDictionary,options: []) let decoded = try JSONSerialization.jsonObject(with: jsonData,options: []) 我尝试了上面这个,我得到以下作为输出: { data = { text = Test Message; }; recipients = "system1@example.com"; sender = "system2@example.com"; } 然而,websocket期望这样: { "sender":"system1@example.com","recipients": ["system2@example.com"],"data":{"text":"Test Message"}} 即使有一些轻微的变化,如错误放置双引号,websocket服务器也不接受输入.如何以这种方式精确格式化JSOn,以便websocket可以接受它? 解决方法
在尝试了各种方法后,以下方式对我来说是有用的,可以获得后端所需的确切格式.
var messageDictionary = [ "sender":"system1@example.com","recipients":["system2@example.com"],"data":[ "text" : data ] ] as [String : Any] let jsonData = try! JSONSerialization.data(withJSONObject: messageDictionary) let jsonString = NSString(data: jsonData,encoding: String.Encoding.utf8.rawValue) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |