从json获取数据,但是我的数据不是数组,迅速3

时间:2018-10-09 07:43:06

标签: ios json swift swift3

我收到了json的响应,我想为我的变量获取它,但是响应中没有数组

{
"status": true,
 "msg": "Login berhasil. username=081xxxxxx reg_id=",
"id_user": {
      "no": "349",
      "nama_teknisi": "Putra Utama",
      "telp_teknisi": "081xxxxx"
    }
}

我有一些代码,但是仍然有错误,这是我的代码:

Alamofire.request(URL_USER_LOGIN, method: .get).authenticate(user: username!, password: password!).responseJSON { response in
        if let error = response.error{
            self.hideLoading()
            return
        }
        debugPrint(response.result.value!)
        let parsedResult = JSON(response.result.value!)

        var successed:Bool = true
        if let success = parsedResult["status"].bool{
            successed = success
        }

        if successed {
            OperationQueue.main.addOperation {
                print("success")
                self.hideLoading()
                let id_user = parsedResult["id_user"].array
                for id_item in id_user! {
                    self.lbnama.append(id_item["nama_teknisi"].string!)
                    self.lbtelp.append(id_item["telp_teknisi"].string!)
                    self.keychain.set(self.lbnama, forKey: "nama_key")
                    self.keychain.set(self.lbtelp, forKey: "telp_key")
                    print(self.keychain.get("nama_key"))
                }
            }
        } else {
            print("error")
        }
}

这是我的错误

enter image description here

4 个答案:

答案 0 :(得分:1)

//Output: foreach ($returnArray as $value) { print_r($value); die(); } 是一个字典,而不是数组,所以

id_user

答案 1 :(得分:1)

更改:

let id_user = parsedResult["id_user"].array 

收件人:

let id_user = parsedResult["id_user"].dictionary

因为您的json正在返回字典。

然后您可以将其附加到标签上。

答案 2 :(得分:0)

从您的答复看来,parsedResult["id_user"]不是数组而是字典。所以你应该使用:

let id_user = parsedResult["id_user"].array

但是,如果不确定parsedResult["id_user"]是否为字典数组,则可以像这样处理。

var id_user: [Any] = []
let idUserObj = parsedResult["id_user"]
if let arr = idUserObj as? [Any] {
    id_user = arr.array
} else if let dict = idUserObj as? [String: Any] {
    id_user = [arr.dictionary]
}

答案 3 :(得分:0)

您正在尝试将parsedResult作为数组,这将导致id_user为零。因此,错误。 由于parsedResult是一本字典,根据上面显示的json响应,您需要将parsedResult读为字典。

只需更改,
let id_user = parsedResult["id_user"].array

let id_user = parsedResult["id_user"].dictionary