获取JSON中的所有项目并将它们放在一个数组中

时间:2016-09-07 02:21:20

标签: json swift alamofire

我正在使用Alamofire获取一些JSON数据而不是将所有内容都硬编码,我想知道如何简单地将所有内容都包含在数组中。

目前,这是JSON文件:

{"One":"Item1","Two":"Item2","Three":"Item3","Four":"Item4","Five":"Item5"}

我的快捷代码:

var pickerData: [String] = [String]() //Array of content.
override func viewDidLoad() {
super.viewDidLoad()

Alamofire.request(.GET, "https://example.com/file.json").responseJSON{ (response) -> Void in

if let JSON = response.result.value{
let One = JSON["One"] as! String
let Two = JSON["Two"] as! String
let Three = JSON["Three"] as! String
let Four = JSON["Four"] as! String
let Five = JSON["Five"] as! String
self.mypickerview.delegate = self
self.mypickerview.dataSource = self
self.pickerData = [One, Two, Three, Four, Five]
...

我怎么能不让他们硬编码,这样我就可以拥有这样的文件,它仍然可以工作并包含JSON中的所有内容,即使我将来添加更多内容:

{"Item1","Item2","Item3","Item4","Item5","Item6"}

1 个答案:

答案 0 :(得分:1)

Aaron是对的,你的JSON应该使用数组来保存项目值。

但是,如果你坚持使用这种格式,你可以像pickerData那样得到这些值:

if let JSON = response.result.value as? [String:AnyObject] {
    let result = JSON.values.flatMap({ String($0) })
    self.pickerData.appendContentsOf(result)
    self.pickerData.sortInPlace()
}

pickerData现在是:

  

[“Item1”,“Item2”,“Item3”,“Item4”,“Item5”]

并且项目将在选择器数组中排序,即使您稍后添加新项目。