我提出这个要求:
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?)-邮递员输出,此处不包括的所有字段:
{
"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分析此内容,错误:
“无法读取数据,因为格式不正确。”
新手到斯威夫特…所以,提前谢谢你的帮助!
编辑:为了更清楚地了解更多信息而编辑。再次感谢!
最佳答案
alamofire并不是“替换输出中的字符”,它给了您一个不同于您期望的对象。如果你打印出你的response.result
类型,你应该会惊讶于NSDictionary
你可能会在那一点上。我们值得信赖的朋友print(...)
非常友好,可以将它转换为String
表示您传递给它的任何内容,但是您不太可能使用JSONDecoder
解析它,因为它不是Data
(解码器期望的那样)。
如前所述:使用responseString
来获取响应,并将其转换为适当的Data
以使用JSONDecoder
进行解析。为了能够正确地控制这个过程,您希望在问题中包含Codable
派生词,并且您可能会在JSONDecoder
上设置日期解析策略。
如果没有您的struct
和来自您的响应的一些格式正确的json(好吧,postman会这样做,如果它是相当完整的),我们就不太可能进一步帮助您。
注:通过编辑完全改变你的问题不是一个好主意。你最好把一个新问题贴出来,并在旧问题上留下一个带有指针的评论,这样人们重新访问它可能会找到正确的地方。如果您更新您的问题,您通常应该保留旧的完整,并修改它与额外的信息,以保持现有的讨论有关。
关于swift - Alamofire POST请求替换输出中的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50745522/