Ios 如何在swift 4中访问项目密钥 我的数据
如何获取值“Name”的数组列表,您能帮助我吗?您可以试试Ios 如何在swift 4中访问项目密钥 我的数据,ios,arrays,json,swift,url,Ios,Arrays,Json,Swift,Url,如何获取值“Name”的数组列表,您能帮助我吗?您可以试试 {"Regions":null,"Cities":[{"Id":"9605","Name":"YANBAA AS SENAYAH"},{"Id":"15","Name":"ABHA"},{"Id":"13","Name":"AD DAMMAM"},{"Id":"1542","Name":"AL BAHA"},{"Id":"14","Name":"AL MADINAH AL MUNAWWARAH"},{"Id":"2213","Name"
{"Regions":null,"Cities":[{"Id":"9605","Name":"YANBAA AS SENAYAH"},{"Id":"15","Name":"ABHA"},{"Id":"13","Name":"AD DAMMAM"},{"Id":"1542","Name":"AL BAHA"},{"Id":"14","Name":"AL MADINAH AL MUNAWWARAH"},{"Id":"2213","Name":"AR'AR"},{"Id":"11","Name":"BURAYDAH"},{"Id":"10","Name":"HAIL"},{"Id":"17","Name":"JAZAN"},{"Id":"6","Name":"MAKKAH AL MUKARRAMAH"},{"Id":"3417","Name":"NAJRAN"},{"Id":"3","Name":"RIYADH"},{"Id":"2237","Name":"SAKAKA"},{"Id":"1","Name":"TABUK"},
//
注意:这是正确的json结构
{“地区”:空,“城市”:[{“Id”:“9605”,“姓名”:“YANBAA AS SENAYAH”},{“Id”:“15”,“姓名”:“ABHA”},{“Id”:“13”,“姓名”:“AD DAMMAM”},{“Id”:“1542”,“姓名”:“AL-BAHA”},{“Id”:“14”,“姓名”:“AL-MADINAH AL-MUNAWWARAH”},{“Id”:“2213”,“姓名”:“AR'AR”},{“Id”:“11”,“姓名”:“BURAYDAH”},{“Id”:“10”,“姓名”:“HAIL”{“17”,“姓名”:“Jaid”:“MAKKAH AL-MUKARRAMAH”},{“Id”:“3417”,“姓名”:“NAJRAN”},{“Id”:“3”,“姓名”:“利雅得”},{“Id”:“2237”,“姓名”:“SAKAKA”},{“Id”:“1”,“姓名”:“TABUK”}
与解码步骤一起。我添加了几个防护装置,以便在出现错误时打印错误。一般来说,抛出错误并在适当的级别上进行处理是一种很好的做法
struct Root :Decodable{
let Cities:[InnerItem]
}
struct InnerItem :Decodable{
let Id:String
let Name:String
}
do {
let arr = try JSONDecoder().decode(Root.self, from: data)
print(arr.Cities)
}
catch {
print(error)
}
解码助手。enum CodingKeys
用于将小写属性转换为大写JSON属性并返回
func work() {
guard let url = URL(string: "https://mysit.com") else {
fatalError("url is nil.")
}
URLSession.shared.dataTask(with: url) {
data, response, error in
guard error == nil else {
fatalError("\(error!)")
}
guard let response = response as? HTTPURLResponse,
response.statusCode == 200 else {
fatalError("Response is nil.")
}
guard let data = data else {
fatalError("data is nil.")
}
decode(data: data)
}.resume()
}
func decode(data: Data) {
let decoder = JSONDecoder.init()
let welcome = try! decoder.decode(Welcome.self, from: data)
print(welcome.cities.first!)
}
有些人使用服务,如将JSON字符串转换为特定的编程语言。这使事情更快、更简单。显示JSONDecoder代码。从url JSON获取数据
struct Welcome: Codable {
var regions: [Region]?
let cities: [City]
enum CodingKeys: String, CodingKey {
case regions = "Regions"
case cities = "Cities"
}
}
struct City: Codable {
let id, name: String
enum CodingKeys: String, CodingKey {
case id = "Id"
case name = "Name"
}
}
struct Region: Codable {
let id, name: String
enum CodingKeys: String, CodingKey {
case id = "Id"
case name = "Name"
}
}
struct Welcome: Codable {
var regions: [Region]?
let cities: [City]
enum CodingKeys: String, CodingKey {
case regions = "Regions"
case cities = "Cities"
}
}
struct City: Codable {
let id, name: String
enum CodingKeys: String, CodingKey {
case id = "Id"
case name = "Name"
}
}
struct Region: Codable {
let id, name: String
enum CodingKeys: String, CodingKey {
case id = "Id"
case name = "Name"
}
}
let responseData = try JSONSerialization.jsonObject(with: (response["Cities"] as! String).data(using: String.Encoding.utf8)!, options: []) as! [[String: Any]]
for item in responseData{
let name = item["Name"] as! String
}