我希望用我的端點的“有效負載”部分填充我的模型。我創建了一個 DataResponse 模型,它具有 Payload 的記錄屬性。我只想從 API 端點的有效負載部分獲取資料。我的網路呼叫不正確,我的模型結構一定是錯誤的,但我不確定需要修復什么。我不確定它是否有所不同,但我的端點顯示為 XML,我將其轉換為下面的 JSON。
struct DataResponse: Decodable {
let record: Payload
}
struct Payload: Decodable {
let SoldToday: Int
}
let url = URL(string: "https:------")!
URLSession.shared.dataTask(with: url) {data, response, error in
guard error == nil,
let data = data else {
print(error)
return
}
let dataResponse = try? JSONDecoder().decode(DataResponse.self, from: data)
if let dataResponse = dataResponse {
print(dataResponse.record.SoldToday)
}
}.resume()
這些是我的 url 端點的內容:
{
"action": "API_DoQuery",
"errcode": "0",
"errtext": "No error",
"dbinfo": {
"name": "Daily",
"desc": []
},
"variables": {
"__iol": "&rand=' new Date().getTime())};\">",
"__script": "&rand=' new Date().getTime());void(0);",
"iol": "<img qbu='module' src='/i/clear2x2.gif' onl oad=\"javascript:if(typeof QBU=='undefined'){QBU={};$.getScript(gReqAppDBID '?a=dbpage&pagename=",
"script": "javascript:$.getScript(gReqAppDBID '?a=dbpage&pagename="
},
"chdbids": [],
"record": {
"payload": "{ \"RecordID\": 04-22-2022, \"SoldToday\": 18, \"ContractToday\": 869327, \"KWToday\": 160960 }",
"update_id": "1647544685640"
}
}
uj5u.com熱心網友回復:
您需要修復兩件事才能解碼您的 json 資料:
您需要與您的 json 資料匹配的模型。如:
struct DataResponse: Decodable {
let record: Record
}
struct Record: Decodable {
let payload: Payload
}
struct Payload: Decodable {
let SoldToday: Int
}
并且您需要確保您的資料是有效的 json。當前variables無效,與payloadin類似record(用引號括起來)。一旦這些被修復,我就能夠在我的測驗中成功解碼資料。
請注意,如果您的端點為您提供 XML,那么最好將 XML 直接轉換為您的模型,而不必轉換為 json。github 上有許多 XML 決議器庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/462518.html
