ネットワーキングと構文解析はまったく新しいです。このAPIからアイテムを表示する方法を理解するために2日連続で費やしました。たとえば、私は知識がまったくないAPIのすべての名前またはオブジェクトが必要であり、自分のケースでは見つけられない解決策を求めてインターネットをサーフィンしようとしました。これが私のコードです:
struct Result: Codable {
var number: [String:Int]
var text: [String:String]
}
struct Surahs: Codable {
var data: Surah
}
struct Surah: Codable {
var surahs: [SurahItem]
}
struct SurahItem: Codable {
var number: Int?
var text: String?
}
enum CodingKey:String, Swift.CodingKey {
case name = "name"
case text = "text"
case number = "number"
}
import UIKit
class afasyVC: UIViewController {
func jsonDecoding() {
let jsonUrlString = "http://api.alquran.cloud/quran/en.asad"
guard let url = URL(string: jsonUrlString) else {return}
URLSession.shared.dataTask(with: url) { (data, response, err) in
guard let data = data else {return}
do {
let quraanJsonStuff = try JSONDecoder().decode(SurahItem.self, from: data)
for numbers in [quraanJsonStuff] {
print(quraanJsonStuff)
}
} catch let jsonErr {
print("Error serializing json", jsonErr)
}
}.resume()
}
}
JSONDecoder
次のようスウィフト4内には、JSONのコレクション型を変換します。
{}
Swift構造体/クラスへのJSON辞書。[]
からSwift配列へ。JSONによると、構造は次のとおりです。
struct Root: Codable {
let code: Int
let status: String
let data : Surah
}
struct Surah: Codable {
let surahs: [SurahItem]
}
struct SurahItem: Codable {
let number: Int
let name: String
let englishName : String
// ... and so on
}
ルートオブジェクトには、キーdata
の配列を含むキーの辞書がありますsurahs
SurahItem
配列をデコードして出力するには、
let root = try JSONDecoder().decode(Root.self, from: data)
for surah in root.data.surahs {
print(surah.number, surah.name, surah.englishName)
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加