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
Json 字符串(数据:theData,编码:String.encoding.utf8)返回nil_Json_Swift - Fatal编程技术网

Json 字符串(数据:theData,编码:String.encoding.utf8)返回nil

Json 字符串(数据:theData,编码:String.encoding.utf8)返回nil,json,swift,Json,Swift,我正在尝试使用Swift通过一个“get”请求从本地主机服务器获取JSONString 出于某种原因,这会不断返回nil。我尝试使用字符串(解码:theData,as:UTF8.self),它返回带有� 人物 问题肯定不是来自服务器。我在《邮递员》上测试了它,效果很好。谢谢大家,使用了response.setCharacterEncoding(“UTF8”)在我的HTTPServlet响应上。如果字符串(数据:theData,encoding:.utf8)返回nil则数据不是有效的UTF-8序列

我正在尝试使用Swift通过一个“get”请求从本地主机服务器获取JSON
String

出于某种原因,这会不断返回
nil
。我尝试使用
字符串(解码:theData,as:UTF8.self)
,它返回带有� 人物


问题肯定不是来自服务器。我在《邮递员》上测试了它,效果很好。

谢谢大家,使用了
response.setCharacterEncoding(“UTF8”)在我的HTTPServlet响应上。

如果
字符串(数据:theData,encoding:.utf8)
返回
nil
则数据不是有效的UTF-8序列。@MartinR那么我如何将数据作为字符串获取?您似乎是从本地服务器获取数据。您应该知道用于对响应进行编码的编码。数据包含什么?它是如何编码的?你期望什么样的字符串
print(数据为NSData)
可能有助于调查该问题。首先,服务器发送的JSON似乎编码不正确。JSON必须使用UTF8编码,如果不能将其解释为有效的UTF8序列,则表示它不是有效的JSON。也许你遗漏了一些标题?e、 g.
接受:应用程序/json
?我首先尝试将结果解码为
.ascii
,以查看它。
session = URLSession(configuration: URLSessionConfiguration.default)
        let url = URL(string: "http://localhost:8080/menu?action=get_all")!
        let task = session.dataTask(with: url) { (data: Data?, urlResponse: URLResponse?, error: Error?) in
            if error == nil{
                if let theData = data{
                    print(String(data: theData, encoding: String.Encoding.utf8))
                    print("is main thread ? \(Thread.current.isMainThread)")
                }
            }
            self.session.finishTasksAndInvalidate()
        }
        task.resume()