如何使API调使用结构与数量在id文件

0

的问题

提供更多的细节:

我想访问的级别从API(下面的链接),已在它的结构、数目在开始之一的水平(25th_percentile). 我无法创造一个不断的在我的模型,因为我不能启动我们的价值有一个数字(即25个中25th_percentile). 如何可以访问该数据在25百分位数的水平?

我的代码如下。 当我用枚举的建议,我获得一个"不符合可解协议"的错误。

     //
 //  SchoolData.swift
 //
 //

 import Foundation

 struct Results: Decodable {
     let results: [SelectedSchool]
 }



 struct SelectedSchool: Decodable, Identifiable {
     let id: Int
     let fed_sch_cd: String
     let latest: LatestData

 }
 struct LatestData: Decodable {
     let school: SchoolDetails
     let admissions: AdmissionsDetails
 }

 struct SchoolDetails: Decodable {
     let name: String
     let school_url: String
 }

 struct AdmissionsDetails: Decodable {
     let admission_rate: AdmissionRateDetails
     let sat_scores: SATScores
 }


 struct SATScores: Decodable {
     let midpoint: SATSubjects
     let the25th_percentile: SATSubjects2

     enum CodingKeys: String, CodingKey {
         case the25th_percentile = "25th_percentile"
     }
 }




 struct SATSubjects: Decodable {
     let math: Int?
     let writing: Int?
     let critical_reading: Int?
 }


 struct SATSubjects2: Decodable {
     let math: Int?
     let writing: Int?
     let critical_reading: Int?
 }


 struct AdmissionRateDetails: Decodable {
     let overall: Float?
 }

 struct URLName {
     let partialURL = "https://api.data.gov/ed/collegescorecard/v1/schools?school.name="
     var searchTerm: String = ""
     let apiKey = "&api_key=myapikey"
 }

API转换到手机中。

api json swiftui
2021-11-23 03:43:03
1

最好的答案

0

试试这个:

struct SATTwentyFive: Decodable {
    let the25th_percentile: SubjectData
    
    enum CodingKeys: String, CodingKey {
        case the25th_percentile = "25th_percentile"
    }
}

EDIT1:

试试这些种类的结构阅读式的数据(对我):

struct Results: Decodable {
    let results: [SelectedSchool]
}

struct SelectedSchool: Decodable, Identifiable {
    let id: Int
    let fed_sch_cd: String
    let latest: LatestData
}

struct LatestData: Decodable {
    let school: SchoolDetails
    let admissions: AdmissionsDetails
}

struct SchoolDetails: Decodable {
    let name: String
    let school_url: String
}

struct AdmissionsDetails: Decodable {
    let admission_rate: AdmissionRateDetails
    let sat_scores: SATScores
}

// ---- here ----
struct SATScores: Decodable {
    let midpoint: SATSubjects
    let the25th_percentile: SATSubjects

    enum CodingKeys: String, CodingKey {
        case the25th_percentile = "25th_percentile"
        case midpoint = "midpoint"
    }
}

struct SATSubjects: Decodable {
    let math: Int?
    let writing: Int?
    let critical_reading: Int?
}

struct AdmissionRateDetails: Decodable {
    let overall: Float?
}

和解码 Results 如:

try JSONDecoder().decode(Results.self, from: data)
2021-11-25 03:09:56

谢谢workingdog-当我建议,我获得一个不符合协议解码错误。
boxscorepress.com

这种办法在我的答案的 enum CodingKeys 工程。 我已经更新我的答案。 附注:不要发表你的秘密的关键,删除它。
workingdog

workingdog-删除API的关键,并感谢你!!!! 我试过1000事,但显然不在上面。 真的真的很感谢你的时间!
boxscorepress.com

很高兴它的工作。 如果我的答案是的使用,可能标志着它作为正确的请。
workingdog

我有没有标记但我没有足够的"信誉点"它接受我的标记。 它表示,它指出,它以某种方式。 再次感谢你。
boxscorepress.com

哦,我不知道你不能接受一个答案的时候,你后一个问题。 谢谢你。
workingdog

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................