在 Swift 中将字符串转换为 json。用于发送 websocket
Converting a String to json in Swift. for sending in a websocket
我有一个 JS 可以通过 websocket 发送 Json。如下:
function senddata()
{
var obj = {};
var arrayOfRequests = [];
arrayOfRequests.push({
"id":22,
"repeat":false,
})
obj.DataReq = arrayOfRequests;
var stringToSend = JSON.stringify(obj);
websocketConnection.send( stringToSend );
}
此代码按预期工作,服务器发回请求的信息。
我正在尝试在 swift 中做同样的事情。
func send(text: String) {
let message = text
guard let json = try? JSONEncoder().encode(message),
let jsonString = String(data: json, encoding: .utf8)
else {
return
}
webSocketTask?.send(.string(jsonString)){ error in
if let error = error {
print("Error sending message", error)
}
}
}
send(text: "{“DataReq”:[{“id”:22,“repeat”:false}]}")
这样服务器不发送任何响应。
如果将这两个示例都连接到 websocket 回显服务器
JS代码发送{"DataReq":[{"id":22,"repeat":false}]}
而 Swift 代码发送“{"DataReq":[{"id":9,"repeat":false}]}"。
感谢任何帮助。
将 JSON 字符串编码为 JSON 是没有意义的。去掉编码部分
func send(text: String) {
webSocketTask?.send(.string(text)){ error in
if let error = error {
print("Error sending message", error)
}
}
}
并且在 send
行中双引号无效。使用此语法
send(text: #"{"DataReq":[{"id":22,"repeat":false}]}"#)
我有一个 JS 可以通过 websocket 发送 Json。如下:
function senddata()
{
var obj = {};
var arrayOfRequests = [];
arrayOfRequests.push({
"id":22,
"repeat":false,
})
obj.DataReq = arrayOfRequests;
var stringToSend = JSON.stringify(obj);
websocketConnection.send( stringToSend );
}
此代码按预期工作,服务器发回请求的信息。
我正在尝试在 swift 中做同样的事情。
func send(text: String) {
let message = text
guard let json = try? JSONEncoder().encode(message),
let jsonString = String(data: json, encoding: .utf8)
else {
return
}
webSocketTask?.send(.string(jsonString)){ error in
if let error = error {
print("Error sending message", error)
}
}
}
send(text: "{“DataReq”:[{“id”:22,“repeat”:false}]}")
这样服务器不发送任何响应。
如果将这两个示例都连接到 websocket 回显服务器
JS代码发送{"DataReq":[{"id":22,"repeat":false}]}
而 Swift 代码发送“{"DataReq":[{"id":9,"repeat":false}]}"。
感谢任何帮助。
将 JSON 字符串编码为 JSON 是没有意义的。去掉编码部分
func send(text: String) {
webSocketTask?.send(.string(text)){ error in
if let error = error {
print("Error sending message", error)
}
}
}
并且在 send
行中双引号无效。使用此语法
send(text: #"{"DataReq":[{"id":22,"repeat":false}]}"#)