swift - Alamofire POST 请求替换输出中的字符
问题描述
我提出这个要求:
Alamofire.request(path,method:.post, parameters:params, encoding: JSONEncoding.default,headers:headers).responseJSON { response in
print("Result: \(response.result.value)"
do {
self.list = try JSONDecoder().decode([list].self, from: result!) for event in self.lists {
print(event.title," : ",event.description)
}
} catch let parseError as NSError {
print("JSON Error \(parseError.localizedDescription)")
}
}
应该看起来像这样的数据(JSON?) - Postman 输出,此处未包含的所有字段:
{
"start": "2016-02-01 11:30:00",
"end": "2016-02-01 14:42:24",
"id": 3192,
"ownership": false,
}
在 XCode 中打印出来是这样的:
{
start = "2016-02-01 11:30:00";
end = "2016-04-14 20:30:00";
"id" = 3192;
ownership = 0;
}
结果:我无法使用 JSONDecoder 解析它,错误:
“无法读取数据,因为它的格式不正确”。
Swift 的新手......所以,提前感谢您的帮助!
编辑:为了清楚起见,编辑了更多信息。再次感谢!
解决方案
Alamofire 不是“替换输出中的字符”,它为您提供了一个与您期望的对象不同的对象。如果您打印出您的类型,您response.result
应该会对您可能会得到的结果感到惊讶NSDictionary
。我们值得信赖的朋友print(...)
很乐意将其转换为String
您传递的任何内容的表示,但您不太可能能够使用它来解析它,JSONDecoder
因为它不是 Data
(这是解码器所期望的)。
正如我之前所说:使用responseString
以获取响应并将其转换为适合Data
解析的使用JSONDecoder
. 为了能够正确控制此过程,您希望将您的Codable
导数包含在问题中,并且您可能会在JSONDecoder
.
如果没有您struct
的响应和一些格式正确的 JSON(好吧,如果它相当完整,Postman 会这样做),我们不太可能能够为您提供任何进一步的帮助。
PS:通过编辑完全改变你的问题并不是一个好主意。您最好发布一个新问题并在旧问题上留下带有指向它的指针的评论,这样人们重新访问它可能会被引导到正确的地方。如果您更新您的问题,您通常应该保留旧问题并使用附加信息对其进行修改,以保持现有讨论的相关性。
推荐阅读
- java - 如何:调试模块“android”生产:java.lang.NoClassDefFoundError:com/android/resources/ResourceFolderType
- ios - URLSession:有什么方法可以在下载文件时读取文件?
- python-3.x - 时间/日期时间代码块不起作用
- c# - C# WEB API 如何使用参数 HttpPost 以及如何 httpsGet 字符串并返回自定义列表
- python - nltk 资源 C:未找到
- php - 如何通过 Laravel 中的 API 从 Shopify 商店获取所有订单
- javascript - 窗帘动画不适用于多个图像
- pdf - 在 Ubuntu 上将 Powerpoint 转换为 PDF -- 输出 PDF 文件的图像间距已损坏并且页面大小/尺寸缩小
- json - 尝试使用“powerline-daemon --replace”重新启动后,电力线杰森搞砸了
- laravel - 使用 category.parent_id 创建一个带有嵌套的数组