How to create JSON from a dictionary in Swift 4?

I have a JSON snipped which needs to be added as the body when I open a websocket.

 

sender: "system1@example.com", recipients:"system2@example.com", data: { text: "Test Message" },

So using Swift I did the following,

 

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) }

When I print the jsonString, I get

 

Optional("{n "sender" : "system1@example.com",n "data" : {n "text" : "Test Message"n },n "recipients" : "system2@example.com"n}")

as the console output. I expected the above snippet to be formatted as JSON. How to get the output as normal JSON without the /n and additional spaces? Im using Swift 4 and Xcode 9.1

Edit 2:

 

let jsonData = try JSONSerialization.data(withJSONObject: messageDictionary, options: []) let decoded = try JSONSerialization.jsonObject(with: jsonData, options: [])

I tried doing the above and I get the following as the output:

 

{ data = { text = Test Message; }; recipients = "system1@example.com"; sender = "system2@example.com"; }

However the websocket expects this:

 

{ "sender":"system1@example.com","recipients": ["system2@example.com"],"data":{"text":"Test Message"}}

Even with a slight variation like misplacing of double quotes the websocket server doesnt accept the input. How to exactly format the JSOn this way so that the websocket can accept it?

Powered by WPeMatico

You may also like...

Comments are closed.