swift 转换字典为jsonString错误。协议类型'Any'不能符合'Encodable',因为只有具体类型才能符合协议。

问题描述 投票:0回答:1

我有一个字典,我想转换为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)
        }
    }
}
ios json swift encode
1个回答
0
投票

你需要给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)
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.