編集:私は同じ問題のためにSOの他の答えを読んだが、Imは希望の出力を得ることができません。私は他の質問で示唆されているように多くのバリエーションを試しましたが、うまくいきませんSwift 4の辞書からJSONを作成する方法は?
WebSocketを開いたときに本体として追加する必要があるJSONスナップがあります。
sender: "[email protected]",
recipients:"[email protected]",
data: {
text: "Test Message"
},
だから私はjsonStringを印刷するとき、私はコンソール出力として
Optional("{\n \"sender\" : \"[email protected]\",\n \"data\" : {\n
\"text\" : \"Test Message\"\n },\n \"recipients\" :
\"[email protected]\"\n}")
を取得するが、私は次のことをやった
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)
}
をスウィフトを使用して私は上記のスニペットをJSONとしてフォーマットすることを期待していました。 /nと追加のスペースがない通常のJSONとして出力を取得するにはどうすればよいですか? スウィフト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 = "[email protected]";
sender = "[email protected]";
}
のWebSocketはこのことを期待するしかし、 :
{ "sender":"[email protected]","recipients":
["[email protected]"],"data":{"text":"Test Message"}}
E Webサーバーのサーバーは入力を受け付けません。どのようにしてwebSocketがそれを受け入れることができるようにJSOnをこのように正確にフォーマットするのですか?
何を求めていることは実際に辞書自体JSONは、あなたが直接あなたが文字列としてその事を渡す場合、あなたが文字列無関係 –
にデータを変換する必要があるがあるだけで、 'Data'オブジェクトを渡すことができ、不要なものですUTF-8ではなくASCIIエンコーディングが本当に確実でしょうか? – rmaddy
はい、UTF-8である必要があります。それを指摘してくれてありがとう! – SeaWarrior404