Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从字符串中删除单个反斜杠_Ios_Swift_String - Fatal编程技术网

Ios 从字符串中删除单个反斜杠

Ios 从字符串中删除单个反斜杠,ios,swift,string,Ios,Swift,String,我尝试将json参数发送到服务器。这是我所有的代码,但我有一个反斜杠字符的问题。 这是包含反斜杠字符的测试变量结果。我应该删除这个字符,因为在服务器端我得到了一个无效的输入错误,服务器无法检测发送参数 替换字符后的测试变量 {\force\:\1\,\from\:\0\,\flag\:\1\,\to\:\0\,\spec\:{\propValueMask\:\*\,\itemsType\:\avl\u resource\,\sortType\:\sys\u name\,\propType\:\a

我尝试将json参数发送到服务器。这是我所有的代码,但我有一个反斜杠字符的问题。 这是包含反斜杠字符的测试变量结果。我应该删除这个字符,因为在服务器端我得到了一个无效的输入错误,服务器无法检测发送参数

替换字符后的测试变量 {\force\:\1\,\from\:\0\,\flag\:\1\,\to\:\0\,\spec\:{\propValueMask\:\*\,\itemsType\:\avl\u resource\,\sortType\:\sys\u name\,\propType\:\avl\u resource\,\propName\:\sys\u name\}

private func RegisterForGetSourceList() {

    var sid = ""

    if let authEntity = AuthenticationManager.shareInstance.fetchAuthenticationEntity() {

        if let tokenKey = authEntity.sID {
            sid = tokenKey
        }
    }

    let specParam = [
        "itemsType": "avl_resource",
        "propName": "sys_name",
        "propValueMask": "*",
        "sortType": "sys_name",
        "propType": "avl_resource"
    ]

    let paramJSON: [String: Any] = [
        "spec": specParam,
        "force": "1",
        "flag": "1",
        "from": "0",
        "to": "0"
        ]

    do {

        let paramData = try JSONSerialization.data(withJSONObject: paramJSON, options: .prettyPrinted)

        if let paramString = NSString(data: paramData, encoding: String.Encoding.utf8.rawValue) as String? {

            var test = String(paramString.characters.filter { !" \n\t\r".characters.contains($0) })

            test = test.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)

            let parameters = [Constant.SVC:Constant.SEARCH_ITEMS_SVC,Constant.SID:sid,Constant.PARAM:test] as [String: Any]

            LibraryAPI.shareInstance.RunHttpPostJSONRequest(parameters: parameters, contentType: "JSON", closure: { success, error in

                if let result = success as? [String: Any] {
                    if let eid = result["eid"] as? String {}
                } else if error != nil  {
                    print(error?.localizedDescription ?? "there was an error in get response")
                }
            })
        }
    } catch {
        print(error.localizedDescription)
    }
}
我读了很多链接,在所有主题中都有人建议替换\但这不起作用。 有人提出了一些解决这个问题的建议
谢谢。

正如瓦迪安所建议的,字符串反斜杠是虚拟的,不会发送到服务器

如果要打印json进行调试,我建议您使用以下方法:

var json = try JSONSerialization.jsonObject(with: paramData, options: .allowFragments)
确保这是包装在你的做捕捉块

如果希望json作为字符串,可以执行以下操作:

let convertedString = String(data: paramData, encoding: .utf8)

反斜杠是虚拟的。在文本字符串中显示双引号是必需的。它们不会被发送到服务器。。。。漂亮地打印字符串,然后删除空格和行分隔符是毫无意义的。服务器根本不关心美学。删除该选项。是的,无论如何OP都应该将JSON数据转换为对象,而不使用字符串表示法(调试除外)。这是一个常见的错误。转换时不需要JSON字符串。