im试图在Swift中从this JSON获取参数“ bicisDisponibles”和“ anclajesDisponibles”。 我尝试了许多方法来完成此操作,但没有一个起作用。
我已经尝试过了,但是没有用:(:
Alamofire.request("https://www.zaragoza.es/sede/servicio/urbanismo-infraestructuras/estacion-bicicleta/34.json", method: .get, parameters: ["rf":"html"], encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
print(response.result.value)
}
break
case .failure(_):
print(response.result.error)
break
}
}
我想像一个var
一样把它放在UILabel
上:)
答案 0 :(得分:1)
struct data: Codeable {
let id: Int?
let about: String?
let title: String?
...
let bicisDisponibles: Int?
let anclajesDisponibles: Int?
...
}
let decoder = JSONDecoder()
let myData = try! decoder.decode(data.self, for: response.result.value)
print(myData.bicisDisponibles)
print(myData.anclajesDisponibles)
制作一个具有与JSON相同的参数的结构-使它可编码,然后使用JSONDecoder对其进行解码。 希望这会有所帮助
答案 1 :(得分:1)
我修改了@ValW的结构,将id更改为String。在操场上用json作为字符串进行了测试。
import UIKit
struct data: Codable {
let id: String?
let about: String?
let title: String?
let bicisDisponibles: Int?
let anclajesDisponibles: Int?
}
var json = "{\"id\":\"34\",\"about\":\"http://www.zaragoza.es/ciudad/viapublica/movilidad/bici/detalle_Bizi?oid=34\",\"title\":\"Plaza Magdalena\",\"estado\":\"OPN\",\"bicisDisponibles\":11,\"anclajesDisponibles\":10,\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.8733258730100609,41.65210655043524]},\"lastUpdated\":\"2018-08-31T11:15:00Z\",\"description\":\"<ul><li>Estado: Operativa</li><li>Bicis disponibles: 11</li><li>Anclajes disponibles: 10</li></ul><p>Actualizado: 13:15</p>\",\"icon\":\"//www.zaragoza.es/contenidos/iconos/bizi/conbicis.png\"}"
let jsonData = json.data(using: String.Encoding.utf8)
let decoder = JSONDecoder()
let myData = try! decoder.decode(data.self, from: jsonData!)
print(myData.bicisDisponibles!)
print(myData.anclajesDisponibles!)
此代码打印出来,bicisDisponibles为11,anclajesDisponibles为10。
¡Saludos!
答案 2 :(得分:0)
您可以像下面的代码一样解析JSON。
Alamofire.request("https://www.zaragoza.es/sede/servicio/urbanismo-infraestructuras/estacion-bicicleta/34.json", method: .get, parameters: ["rf":"html"], encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
if let result = response.result.value as? [String: Any]{
if let bicisDisponibles = result["bicisDisponibles"] as? Int{
print(bicisDisponibles)
}
if let anclajesDisponibles = result["anclajesDisponibles"] as? Int{
print(anclajesDisponibles)
}
}
}
break
case .failure(_):
print(response.result.error)
break
}
}