簡體   English   中英

如何在Swift 4中從JSON字符串獲取參數

[英]How to get parameter from JSON string in Swift 4

我試圖從這個JSON獲取Swift參數“ 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 :)

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對其進行解碼。 希望這可以幫助

我已經修改了@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。

禮炮!

您可以像下面的代碼一樣解析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

}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM