Json 字符串(数据:theData,编码:String.encoding.utf8)返回nil
我正在尝试使用Swift通过一个“get”请求从本地主机服务器获取JSONJson 字符串(数据: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序列
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()