json - 获取JSON中的所有项目并将它们放入数组中

标签 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"}

最佳答案

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"]

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

关于json - 获取JSON中的所有项目并将它们放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39360331/

相关文章:

java - 在 Activity 之间传递对象和/或对象列表的有效方法是什么?

swift - 在使用 swift 展开可选值蓝牙时意外发现 nil

ios - UIViewController 中的 textLabel.text 在从 NSObject 分配字符串时出现 nil

arrays - 使用 swiftyjson 时数组列表项计数和数组中元素的数量不匹配?

javascript - 将电子表格值返回给 JavaScript

java - 如何将平面 JSON 转换为分层 java 类?

javascript - 在 PHP 中打印嵌套 Json

ios - 无法关闭 iPhone 5 和 iPhone 5s 的键盘

ios - 在 API 中创建 if 条件时,如何修复 swift 代码中调用 Storyboard 的速度?

ios - 想要在 Alamofire reponseJSON block 中使用 UIAlertController