使用 Swift 4 进行 JSON 解析

谢哈布

我对网络和解析完全陌生。我已经连续两天试图弄清楚如何显示这个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 字典
  • 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章