gpt4 book ai didi

swift - 我有字典数组类型的 JSON 数据。如何使用 Codable 协议(protocol)对其进行解码?

转载 作者:行者123 更新时间:2023-11-30 10:40:26 25 4
gpt4 key购买 nike

[
{
"status":"ok"
},
{
"feeds":[
{
"id":"68",
"userby":"1",
"usertype":"Registered Students",
"content":"test",
"total_likes":"0",
"total_comments":"0",
"video_url":"(Some_URL)",
"image_url":"",
"created_date":"2019-06-26 20:34:02",
"modified_date":"0000-00-00 00:00:00",
"is_active":"Y",
"is_deleted":"N",
"feed_id":"68",
"user_name":"M Y",
"profile_image":"(some_URL)",
"is_liked":"N"
}, //And so on feed entries...! ]}]



// The Structure I tried using.

typealias FeedDataDict = [FeedData]

struct FeedData : Codable {
var status : String
var feeds : [Feed]

}


let decoder = JSONDecoder()
let content = try decoder.decode( FeedDataDict.self , from: data)
print ( content[0].feeds[0].id )

我尝试将结构添加到数组中,并使用索引 0 来访问它。然而它给我带来了问题,说索引处的值被发现为零。

我希望收集数据中存在的所有值。

最佳答案

在我看来,你的 json 是一个字典数组,所以如果你这样做

do {
let content = try JSONSerialization.jsonObject(with: data) as! [[String: Any]]
} catch {
print(error)
}

然后 content 是一个数组,其中第一个索引包含 ["status": "ok"] ,第二个元素是 feed 数组

您还可以通过在 FeedData 结构中使用自定义 init 来使用 Codable

struct FeedData : Codable {
var status : String?
var feeds : [Feed]?

init(from decoder: Decoder) throws {
var values = try decoder.unkeyedContainer()
let statusDict = try values.decode([String:String].self)
status = statusDict["status"]
let feedsDict = try values.decode([String:[Feed]].self)
feeds = feedsDict["feeds"]
}
}

关于swift - 我有字典数组类型的 JSON 数据。如何使用 Codable 协议(protocol)对其进行解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56933458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com