Swift-使用可解码来解码仅包含字符串的JSON数组
我有一个示例JSON,其中它只是一个字符串数组,没有键,我想使用Swift-使用可解码来解码仅包含字符串的JSON数组,json,swift,Json,Swift,我有一个示例JSON,其中它只是一个字符串数组,没有键,我想使用可解码的协议来使用JSON并从中创建一个简单的模型 json如下所示: { "names": [ "Bob", "Alice", "Sarah"] } 只是一个简单数组中的字符串集合 我不确定的是,如何使用新的SwiftDecodable协议在没有密钥的情况下将其读入模型中 我看到的大多数示例都假设JSON有一个键 即: 上述示例假设json是一个键值;如何使用可解码协议在没有密钥的情况下对JSON进行反编码 非常感谢此JSON的
可解码的
协议来使用JSON并从中创建一个简单的模型
json如下所示:
{ "names": [ "Bob", "Alice", "Sarah"] }
只是一个简单数组中的字符串集合
我不确定的是,如何使用新的SwiftDecodable
协议在没有密钥的情况下将其读入模型中
我看到的大多数示例都假设JSON有一个键 即: 上述示例假设json是一个键值;如何使用可解码协议在没有密钥的情况下对JSON进行反编码
非常感谢此JSON的对应结构是
struct User: Decodable {
let names: [String]
}
解码
let model = try decoder.decode(User.self, from: dataResponse)
把名字都记下来
let names = model.names
或者传统上没有JSONDecoder的开销
let model = try JSONSerialization.jsonObject(with: dataResponse) as? [String:[String]]
对于这个简单的json结构,我想最好不要创建任何结构并使用
let model = try decoder.decode([String:[String]].self, from: dataResponse)
print(model["names"])
适合您的模型的json是
{
"names": [{
"userId": 2,
"id": 23,
"title": "gdgg",
"completed": true
}]
}
struct Root: Codable {
let names: [User]
}
struct User: Codable {
let userId, id: Int
let title: String
let completed: Bool
}
或者干脆
let names=try decoder.decode(User.self,from:dataResponse)。names
需要注意的是,您当前的用户模型与当前的json没有关系“我看到的大多数示例都假设json有一个键。”您的json确实有一个键。很抱歉,我可能错过了这个键
{
"names": [{
"userId": 2,
"id": 23,
"title": "gdgg",
"completed": true
}]
}
struct Root: Codable {
let names: [User]
}
struct User: Codable {
let userId, id: Int
let title: String
let completed: Bool
}