我对网络和解析完全陌生。我已经连续两天试图弄清楚如何显示这个api 中的项目。例如,我需要来自 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
}
在根对象中有一个 key 字典,data
其中包含key的数组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] 删除。
我来说两句