![](/img/trans.png)
[英]How to load JSON response with codable structure into tableview using Swift 4.2?
[英]trying to decode value in swift 4.2 using its position in the json structure
如何使用 swift Decodable 解碼以下內容? 我只對提取值感興趣
{
"batchcomplete":"",
"query":{
"normalized":[ ],
"pages":{
"434325":{ //can be any number!
"pageid":434325,
"ns":0,
"title":"asdfasdfsa",
"extract":""
我正在嘗試以下操作:
struct Entry: Decodable {
let batchcomplete: String
let query: Query
struct Query: Decodable {
let normalized: [String]
let pages: Page
struct Page: Decodable {
let pageid: Entry // I think this is going to be an issue
struct Entry: Decodable {
let title: String
let extract: String
}
}
}
}
我正在嘗試像這樣檢索提取物:
print(entry.query.pages.first.extract)
有沒有辦法為此使用.first ?
我只是每個人都會獲得最多一頁,所以理想情況下我會抓住第一個元素。
您的解碼代碼在“查詢類型”之前都可以。
那么應該使用什么來代替:
struct Query: Decodable {
let normalized: [String]
let pages: [String: Page]
struct Page: Decodable {
let pageid: Int
let title: String
let extract: String
}
}
所以,關鍵點:
[String: <SomeDecodableType>]
因為任何JSON Object
都可以映射到[String: <Decodable>]
。Page.Entry
,只需將所有字段都放到Page
extract
而不是entry.query.pages.first.extract
您必須使用entry.query.pages.first?.value.extract
(第一個隨機頁面的extract
,因為[String: Page]
未排序)或entry.query.pages.sorted(by: sorter).first?.value.extract
其中sorter
是一些功能,這需要兩個鍵值對,並返回true,如果第一個應該之前第二個為了去),以獲得first
使用一些命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.