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?