在 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}]}"#)