【发布时间】:2018-11-08 14:32:56
【问题描述】:
所以我反复收到此错误:
“字符 0 周围的值无效。”
我已经用尽了所有方法来调试它。基本上,API 在 Postman 中运行良好,但在代码中却严重失败。邮递员是本地设置的,因此我不能在这里分享。无论如何,这是我的代码:
let headers = ["Content-Type": "application/json",
"Accept": "application/json"]
let params = ["userId":"98", "candidateId":"4"]
Alamofire.request(url, method: .post, parameters: params, encoding:
JSONEncoding.default, headers: headers).response { response in
if let data = response.data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as? [String: Any]
completion(json , nil)
} catch {
completion(nil, response.error)
}
}else{
completion(nil, response.error)
}
}
我尝试过 responseString、responseJSON & response 和 JSONSerialization 我已经使用了带有 .allowFragments、.mutableContainers 和 .mutableLeaves 的选项,但没有用。我什至尝试给它标题,尽管邮递员调用不包括标题,但又一次失败了。我该怎么办,请帮忙。下面是响应对象的快照:
这是我这样做后得到的responseString:
String(data: data, encoding: .utf8)
& 这是我删除 .allowFragments 时的错误:
Error Domain=NSCocoaErrorDomain Code=3840 "JSON 文本没有开始 带有数组或对象以及允许未设置片段的选项。” UserInfo={NSDebugDescription=JSON 文本不是以数组开头或 允许未设置片段的对象和选项。}
邮递员电话快照:
【问题讨论】:
-
发送标头
Content-Type: application/json和Accept-Type: application/json -
我做了但无济于事
-
打印
reponseString并检查它是否真的是 JSON,或者您是否缺少参数/标题。 -
responseString得到了什么? -
再一次,
responseString(或String(data: data, encoding: .utf8)是什么?另外,.mutableContainers&.mutableLeaves不应该在 Swift 中使用。如果你使用String,Swift 数组的 Swift 字典, 它们已经是可变的。.allowFragments用于验证特定的 JSON:单个String(当顶层是字符串,而不是数组/字典时)。
标签: ios swift alamofire xcode10