Edit: Ich habe die anderen Antworten auf SO für das gleiche Problem gelesen, aber ich kann nicht die gewünschte Ausgabe erhalten. Ich habe viele Variationen versucht, wie in anderen Fragen vorgeschlagen, aber es funktioniert nicht.Wie erstelle ich JSON aus einem Wörterbuch in Swift 4?
Ich habe ein JSON geschnippt, die als Körper hinzugefügt werden muss, wenn ich einen Websocket öffne.
sender: "[email protected]",
recipients:"[email protected]",
data: {
text: "Test Message"
},
mit Swift Also habe ich die folgenden,
var messageDictionary : [String: Any] = [
"sender": "[email protected]",
"recipients":"[email protected]",
"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)
}
Wenn ich das jsonString drucken, ich
Optional("{\n \"sender\" : \"[email protected]\",\n \"data\" : {\n
\"text\" : \"Test Message\"\n },\n \"recipients\" :
\"[email protected]\"\n}")
als Konsolenausgabe erhalten. Ich habe erwartet, dass das obige Snippet als JSON formatiert wird. Wie bekomme ich die Ausgabe als normale JSON ohne die/n und zusätzliche Leerzeichen? Im mit Swift 4 und Xcode 9.1
Edit 2:
let jsonData = try JSONSerialization.data(withJSONObject: messageDictionary, options: [])
let decoded = try JSONSerialization.jsonObject(with: jsonData, options: [])
ich die oben versucht zu tun und ich folgende als Ausgabe:
{
data = {
text = Test Message;
};
recipients = "[email protected]";
sender = "[email protected]";
}
jedoch die websocket dies erwartet :
{ "sender":"[email protected]","recipients":
["[email protected]"],"data":{"text":"Test Message"}}
E Mit einer leichten Abweichung wie das Verlegen von doppelten Anführungszeichen akzeptiert der Websocket-Server die Eingabe nicht. Wie formatiere ich den JSOn so, dass der Websocket ihn akzeptiert?
Was Sie fordern ist nicht erforderlich, was, eigentlich Wörterbuch selbst ein JSON, können Sie direkt übergeben 'Data' Objekt, wenn Sie das Ding als String übergeben dann nur Sie Daten zu String –
Unrelated konvertieren müssen, sind aber Sie wirklich sicher, dass Sie ASCII-Codierung und nicht UTF-8 wollen? – rmaddy
Ja, es sollte UTF-8 sein. Danke für das Aufzeigen! – SeaWarrior404