我有一个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.
如何在没有/ n和其他空格的情况下将输出作为普通JsON?
我使用Swift 4和Xcode 9.1
编辑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)总结
以上是内存溢出为你收集整理的如何在Swift 4中从字典创建JSON?全部内容,希望文章能够帮你解决如何在Swift 4中从字典创建JSON?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)