使用Swift 4进行JSON解析
我对网络和解析一无所知。我已经连续两天试图弄清楚如何显示此文件中的项目。例如,我需要api中的所有名称或任何对象,但我一无所知,我尝试在互联网上寻找我无法找到的解决方案。这是我的密码:使用Swift 4进行JSON解析,json,parsing,swift4,Json,Parsing,Swift4,我对网络和解析一无所知。我已经连续两天试图弄清楚如何显示此文件中的项目。例如,我需要api中的所有名称或任何对象,但我一无所知,我尝试在互联网上寻找我无法找到的解决方案。这是我的密码: struct Result: Codable { var number: [String:Int] var text: [String:String] } struct Surahs: Codable { var data: Surah } struct Surah: Codable
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()
}
}
Swift 4中的
JSONDecoder
将JSON集合类型转换如下:
- 将JSON字典
转换为Swift结构/类{}
- 将JSON数组
转换为Swift数组李>[]
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
}
在根对象中,有一个keydata
字典,其中包含keysurahs
解码并打印
SurahItem
数组写入
let root = try JSONDecoder().decode(Root.self, from: data)
for surah in root.data.surahs {
print(surah.number, surah.name, surah.englishName)
}
嗨,欢迎来到苏。请描述您调试代码所采取的步骤,以及问题的具体位置。谢谢您,当我玩arround时,它给我的东西“没有与键号(\“number\”)相关的值,underlineError:nil”),有时解码器希望解码数组,但找到了字典。非常好用!