如何在swift中过滤json对象?
问题描述:
如何过滤这些json对象?我的意思是我想只打印患者的ID等于3如何在swift中过滤json对象?
var patients: Array<AnyObject>? if let obj: AnyObject = manager?.responseObject as AnyObject? {
if let pats = obj["patients"] as! Array<AnyObject>? {
patients = pats
}
}
这是我的印刷可变
{
patients = (
{
city = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440";
district = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440";
firstname = fdfsdf;
lastname = dsfgsdfg;
"patient_id" = 1064;
"patient_status" = 3;
"register_id" = "\U0430\U043083040411";
}
{
city = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440";
district = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440";
firstname = dwfw;
lastname = dsfsdf;
"patient_id" = 1056;
"patient_status" = 1;
"register_id" = "\U0443\U044399111134";
}
}
答
请投下类型下尽可能多地。
所有类型都比AnyObject
更具体,JSON字典总是[String:AnyObject]
而JSON数组是Array<[String:AnyObject]>
。仅当数组包含另一个数组或更多嵌套时,才使用Array<AnyObject>
。
使用filter
功能筛选患者。
var patients = Array<[String:AnyObject]>()
if let obj = manager?.responseObject as? [String:AnyObject] {
if let pats = obj["patients"] as? Array<[String:AnyObject]> {
patients = pats.filter { $0["patient_status"] as! Int == 3 }
}
}
注:在斯威夫特3 AnyObject
已替换为Any
。
+0
非常感谢你的人 –
'if let pats = obj [“patients”] as [String:Any] {patients = pats.filter {$ 0.patient_id == 3}}''或者类似的东西? – Larme