我有一本字典,我想转换成jsonstring。
协议类型'Any‘不能符合'Encodable’,因为只有具体类型才能符合协议,如何修复它?谢谢。
func save(body: [String: Any]) -> Void {
let encoder = JSONEncoder()
if let jsonData = try? encoder.encode(body) { //error here.
if let jsonString = String(data: jsonData, encoding: .utf8) {
print(jsonString)
}
}
}发布于 2020-06-02 06:22:51
您需要给出符合Codable的主体类型。要解决此问题,请创建另一个符合Codable的Codable,并将body变量的类型更改为它。
下面是一个例子:
struct Body: Codable {
// all the properties you require can be added here.
}
func save(body: Body) -> Void {
let encoder = JSONEncoder()
if let jsonData = try? encoder.encode(body) {
if let jsonString = String(data: jsonData, encoding: .utf8) {
print(jsonString)
}
}
}或者您可以像这样使用JSONSerialisation:
func save(body: [String: Any]) -> Void {
if let jsonData = try? JSONSerialization.data(withJSONObject: body, options: .prettyPrinted) {
if let jsonString = String(data: jsonData, encoding: .utf8) {
print(jsonString)
}
}
}https://stackoverflow.com/questions/62145908
复制相似问题