我有一个字典,我想转换为jsonstring。
协议类型'Any'不能符合'Encodable',因为只有具体类型才能符合协议 如何解决?谢谢,我有一个字典,想转换成jsonstring。
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)
}
}
}
你需要给body类型一些符合以下条件的东西 Codable
. 要解决这个问题,请创建另一个 struct
符合 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)
}
}
}
或者你可以使用JSONES序列化,像这样。
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)
}
}
}