0
편집 : 나는 동일한 문제에 대한 다른 답변을 읽었으나 원하는 출력을 얻을 수 없습니다. 다른 질문에서 제안 된 것처럼 많은 변형을 시도했지만 효과가 없습니다.Swift 4에서 사전에서 JSON을 만드는 방법은 무엇입니까?
webSocket을 열 때 본문으로 추가해야하는 JSON 스 니프가 있습니다.
sender: "[email protected]",
recipients:"[email protected]",
data: {
text: "Test Message"
},
것은 그래서 스위프트를 사용하여 나는이 jsonString를 인쇄 할 때은 다음,
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)
}
, 나는 콘솔 출력으로
Optional("{\n \"sender\" : \"[email protected]\",\n \"data\" : {\n
\"text\" : \"Test Message\"\n },\n \"recipients\" :
\"[email protected]\"\n}")
을 얻었다. 위의 스 니펫을 JSON으로 포맷해야합니다. /n 및 추가 공백없이 일반 JSON 출력을 얻는 방법은 무엇입니까?
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]";
}
가 웹 소켓이 기대하지만 스위프트 4와 엑스 코드 9.1
편집 2를 사용 임 :
{ "sender":"[email protected]","recipients":
["[email protected]"],"data":{"text":"Test Message"}}
E ven에 websocket 서버가 입력을 받아 들일 수없는 큰 따옴표의 잘못된 배치와 같은 약간의 변화가 있습니다. JSOn을 웹 포캣이 받아 들일 수 있도록 정확히 포맷하는 법?
당신이 요구하는 것은 불필요한 것은 당신이 문자열로 그 일을 전달하는 경우 직접에만 문자열 –
관련없는 데이터를 변환해야되지만, 다음, Data' 개체'전달할 수 있습니다, 사실, 사전 자체가 JSON입니다 UTF-8이 아닌 ASCII 인코딩을 원하십니까? – rmaddy
예, UTF-8이어야합니다. 그것을 지적 주셔서 감사합니다! – SeaWarrior404