检索 JSON 对象 Swift 2

Posted

技术标签:

【中文标题】检索 JSON 对象 Swift 2【英文标题】:Retrieve JSON object Swift 2 【发布时间】:2015-11-19 12:21:02 【问题描述】:

我可以使用 Swift 获取这个 JSON:


  "estado": "1",
  "turno": 
    "_id": "1",
    "_idEmpresa": "1",
    "_idCentro": "1",
    "Descripcion": "LOCAL",
    "TurnoActual": "40",
    "TurnoSiguiente": "53",
    "Version": "2185"
  

使用以下代码:

let estado =  json["estado"] as? String
if estado == "1" 
   print("Estado OK")

但是,我想访问回合属性。我尝试了很多组合都没有成功。

如果可能的话,我想像在 android 上做的那样,将 turno 直接作为对象 Turno。

你们能帮我解决这个问题吗?

【问题讨论】:

你使用 SwiftyJson 插件吗? 【参考方案1】:

尝试关注

let dictResult = json["turno"] as! NSDictionary
let id = dictResult["_id"] as! String
let idEmpresa = dictResult["_idEmpresa"] as! String

// OR you can directly get data, if you have json as a NSDictionary

let id = json.objectForKey("turno")?.objectForKey("_id") as! String
let idEmpresa = json.objectForKey("turno")?.objectForKey("_idEmpresa") as! String

【讨论】:

【参考方案2】:

turno 是具有 String 键和 String 值的字典,因此不需要向下转换。

此示例打印键 _idDescripcion(如果可用)的值。

if let turno = json["turno"] as? [String:String] 
   if let identifier = turno["_id"]  print(identifier) 
   if let description = turno["Descripcion"]  print(description) 

【讨论】:

【参考方案3】:

我不知道有任何 Swift 库可以自动从您的字典中创建对象。

但自己制作并不难,只是一些样板。

一个例子可能是这样的......

根据字典键创建对象及其初始化器:

struct Turno 

    let _id:String
    let _idEmpresa:String
    let _idCentro:String
    let description:String
    let turnoActual:String
    let turnoSiguiente:String
    let version:String

    init(fromDictionary dictionary: [String:String]) 
        _id = dictionary["_id"] ?? ""
        _idEmpresa = dictionary["_idEmpresa"] ?? ""
        _idCentro = dictionary["_idCentro"] ?? ""
        description = dictionary["Descripcion"] ?? ""
        turnoActual = dictionary["TurnoActual"] ?? ""
        turnoSiguiente = dictionary["TurnoSiguiente"] ?? ""
        version = dictionary["Version"] ?? ""
    

然后将字典传递给结构构造函数:

if let content = json["turno"] as? [String:String] 

    let turno = Turno(fromDictionary: content)

    print(turno._id)
    print(turno._idEmpresa)
    print(turno._idCentro)
    print(turno.description)
    print(turno.turnoActual)
    print(turno.turnoSiguiente)
    print(turno.version)


【讨论】:

以上是关于检索 JSON 对象 Swift 2的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON + Swift 或 ObjC 检索数据时如何处理 CoreData 中的关系

在 Swift 中创建类和结构来表示 JSON 对象

Swift 2 JSON 字节数组到 UIImage

在 swift 2 中解析 json 对象

如何在 Swift 3 中解析来自 URL 的 JSON 数据

Swift 2:将 JSON 原生序列化为核心数据模型对象