如何快速过滤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&lt;[String:AnyObject]&gt;。仅当数组包含另一个数组或更嵌套时才使用Array&lt;AnyObject&gt;

使用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 对象?

如何在mongodb的单个json文档中过滤对象数组? [复制]

如何仅从一个键中过滤对象并将其作为 json 返回?

从 REST API 过滤 JSON 对象的疑问

如何快速通过json构建javabean对象Intellij IDEA