swift 将数据解码为[字符串:字符串],而值中可以包含json

bq8i3lrv  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(172)

所以我有JSON,它有字符串键和值,可以是字符串或自定义JSON,当我把json放在那里(即使我把它放在引号里),JSONDecoder抛出一个错误“给定的数据不是有效的JSON.",当有一个字符串时一切都好,也许有一些可解码的扩展可以帮助吗?不幸的是,编码键在这里不是一个选项。json的例子

"""
    {
        "someKey":"{
            "key1":"value1",
            "key2":"value2"
        }"
    }
"""

简单地解码为

try JSONDecoder().decode([String: String].self, from: json)
huwehgph

huwehgph1#

首先,需要删除引号:

"""
    {
        "someKey":{
            "key1":"value1",
            "key2":"value2"
        }
    }
"""

其次,您必须提供一个更精确的模型:

import Foundation

var json = """
    {
        "someKey":{
            "key1":"value1",
            "key2":"value2"
        }
    }
"""

struct YourStructure: Codable
{
    var someKey: [String:String]
}

let result = try JSONDecoder().decode(YourStructure.self, from: json.data(using: .utf8)!)

JSONDecoder并不是真正为未知模型的JSON设计的。如果你想解析你以前不知道模型的JSON,你必须使用另一个库。我个人使用https://github.com/zoul/generic-json-swift

相关问题