如何快速过滤json对象?
Posted
技术标签:
【中文标题】如何快速过滤json对象?【英文标题】:how to filter json object in swift? 【发布时间】:2016-10-28 09:45:18 【问题描述】:如何过滤这些 json 对象?我的意思是我只想打印 id 等于 3 的患者。
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";
【问题讨论】:
if let pats = obj["patients"] as [String:Any]patients = pats.filter$0.patient_id ==3
或类似的东西?
【参考方案1】:
请尽可能降低类型。
所有类型都比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
注意:在 Swift 3 中,AnyObject
已替换为 Any
。
【讨论】:
以上是关于如何快速过滤json对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Angular 中为嵌套的 JSON 对象使用搜索过滤器?
如何使用 javascript 过滤复杂的 json 对象?