我收到了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")
}
}
这是我的错误
答案 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