无法将 JSON 数组传递给数组

Posted

技术标签:

【中文标题】无法将 JSON 数组传递给数组【英文标题】:Cannot pass JSON array to array 【发布时间】:2016-06-02 02:02:32 【问题描述】:

我正在尝试将我的 JSON 数组传递给一个名为 array 的数组,这样我就可以使用值为 27 的 submission_id 查询该数组以获得 safety_rating_idschedule_job_idscore 和 @987654327 @来自这个 JSON https://codeshare.io/UqJMV 但我被抛出了这个错误

无法将类型“[JSON]”的值转换为预期的参数类型“JSON”

将 JSON 传递给数组的代码:

var array: [JSON] = []

func getTask(onCompletion: () -> (), onError: ((NSError) -> ())? = nil) 

     guard let endPoint = Data.sharedInstance.weeklyEndpoint 
else  print("Empty endpoint"); return 

    Alamofire.request(.GET, endPoint, encoding: .JSON)
        .validate()
        .responseJSON  response in

        switch response.result 

        case .Success:
            if let value = response.result.value 
                let json = JSON(value)
                for (_,subJson):(String, JSON) in json 
                    if let date = subJson["start_date"].string
                        self.date = date
                    
                    if let building = subJson["building_name"].string
                        self.building = building
                    
                    if let jobId = subJson["schedule_job_id"].int 
                        self.jobIdArray.append(jobId)
                    

                    if let tasks = subJson["tasks"].array
                        Tasks.sharedInstance.datas = tasks
                        for building in tasks 
                            if let ratings = building["safety_ratings"].array
                                print(ratings)

                                self.array.append(ratings)

                            
                        
                    


                

                onCompletion()
            

        case .Failure(let error):
            print("Request failed with error: \(error)")
            onError?(error)
        
          

【问题讨论】:

【参考方案1】:

append() 需要单个元素 (JSON),但 ratings 是一个数组 ([JSON])。

这就是错误消息的内容。

要附加一个数组,请使用appendContentsOf:

self.array.appendContentsOf(ratings)

【讨论】:

如何过滤包含submission_id = 27 的数组? (我想得到submission_id为27的两个字典) let filteredArray = array.filter $0["submission_id"] as! Int == 27 它让我从“JSON”转换为不相关类型“Int”总是失败 您需要将JSON 数组转换为“普通”数组,可能是array.arrayValue.filter...

以上是关于无法将 JSON 数组传递给数组的主要内容,如果未能解决你的问题,请参考以下文章

无法将关联数组传递给 vue

vue js 无法将对象数组传递给组件

将 JSON 数组传递给 WCF Web 服务

将包含对象数组的 json 传递给 PostgreSQL 函数会引发格式错误的数组文字。意外的数组元素

如何使用javascript动态地将json数组传递给数据表

将 json 传递给包含 json 数组的服务器