使用Swift在JSON中序列化键

时间:2017-11-20 02:07:13

标签: json swift

我正在尝试序列化JSON字符串。这一个:

"user": {
    apellidos = "Vasco Fornas";
    "created_at" = "<null>";
    email = "m@gmail.com";
    "id_usuario" = 122;
    imagen = "1ufm2Fmifoto.jpeg";
    name = "";
    "nivel_usuario" = 1;
    nombre = Modesto;
    unidad = 0;
    "updated_at" = "<null>";
}, "uid": , "error": 0]
{
    apellidos = "Vasco Fornas";
    "created_at" = "<null>";
    email = "m@gmail.com";
    "id_usuario" = 122;
    imagen = "1ufm2Fmifoto.jpeg";
    name = "";
    "nivel_usuario" = 1;
    nombre = Modesto;
    unidad = 0;
    "updated_at" = "<null>";
}

到目前为止,这是我的代码:

do {//creamos nuestro objeto json                
  print("recibimos respuesta")

  if let json = try JSONSerialization.jsonObject(with: data) as? [String:Any] { //Any for, Any data type

    //Do with json
    print(json);

    DispatchQueue.main.async {//proceso principal             
      let mensaje = json["user"]
      print(mensaje!);                      
    }
  }
}

第一个打印显示完整的JSON字符串,第二个打印显示项目&#34; user&#34;

我如何获得&#34; user&#34;下的所有键的值?项目

1 个答案:

答案 0 :(得分:1)

你可以试试这个,例如:

if let mensaje = json["user"] as? [String:String] {
    for key in mensaje.keys {
        let currentValue = mensaje[key] as? String ?? "" // cast whatever you like
        print(currentValue)
    }
}

或将值作为数组获取......

if let mensaje = json["user"] as? [String:String] {
    let yourValues = Array(mensaje.values)
    print(yourValues)
}

如果您正在搜索“apellidos”:

var apellidos?
if let mensaje = (json["user"] as? [String:String]) {
    apellidos = mensaje["apellidos"] as? String ?? ""
}
print(apellidos)