【问题标题】:Get JSON Data and parse into arrays获取 JSON 数据并解析成数组
【发布时间】:2017-11-29 03:41:14
【问题描述】:

我需要在 4 个不同的数组中解析来自该 url (https://fierce-wildwood-95045.herokuapp.com/categoria) 的数据,一个包含名称,一个包含图像 url,另一个包含其描述。

应该是这样的:

nameArray = ['Iluminação','Acessibilidade','Segurança','Sinalização']
descriptionArray = ['Problemas com iluminação pública como postes com lâmpadas queimadas','Problemas na infraestrutura de acessibilidade como calçadas impróprias','Problemas de segurança como falta de policiamento','Problemas de sinalização como placas quebradas ou pichadas']
imageArray = ['https://s3-sa-east-1.amazonaws.com/pipow/categorias/icones/IluBT%403x.png','https://s3-sa-east-1.amazonaws.com/pipow/categorias/icones/AccessBT@3x.png','https://s3-sa-east-1.amazonaws.com/pipow/categorias/icones/SegBT@3x.png','https://s3-sa-east-1.amazonaws.com/pipow/categorias/icones/SinBT@3x.png']

【问题讨论】:

  • 你在使用 swiftyjson 吗?这样做会更容易。
  • 是否有任何特殊原因需要 4 个数组而不是合适结构的单个数组?您可以使用 Codable 创建该数组。另外,请编辑您的问题以显示您尝试过的代码以及哪些代码不起作用或您遇到的问题。

标签: arrays json swift


【解决方案1】:

您可以像这样使用 Alamofire 获得结果:

Alamofire.request("https://fierce-wildwood-95045.herokuapp.com/categoria", method: .get, parameters: nil, encoding: URLEncoding.default, headers: [:])
        .responseJSON { respone in
            let response_array = respone.result.value as! NSArray
            var id_array : [NSDictionary] = []
            var name_array : [String] = []
            var description_array : [String] = []
            var image_array : [String] = []
            for i in 0..<response_array.count
            {
                id_array.append(((response_array[i] as! NSDictionary).value(forKey: "_id") as! NSDictionary))
                name_array.append(((response_array[i] as! NSDictionary).value(forKey: "nome") as! String))
                description_array.append(((response_array[i] as! NSDictionary).value(forKey: "descricao") as! String))
                image_array.append(((response_array[i] as! NSDictionary).value(forKey: "urlImagem") as! String))
            }
            print("id = \(id_array)")
            print("name = \(name_array)")
            print("description = \(description_array)")
            print("image = \(image_array)")
    }

输出

【讨论】:

  • 为什么是 NSArray / NSDictionary 而不是 Swift 原生集合类型?为什么要valueForKey 而不是密钥订阅?为什么是Alamofire 而不是URLSession?为什么丑陋的基于索引的循环而不是快速枚举?为什么调用(response_array[i] as! NSDictionary) 4 次来一次又一次地获取同一个对象而不是一个临时变量(甚至不需要快速枚举)?为什么是snake_case 变量名而不是camelCase?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
相关资源
最近更新 更多