迭代 JSON,快速

Posted

技术标签:

【中文标题】迭代 JSON,快速【英文标题】:iterate JSON, swift 【发布时间】:2016-07-22 14:10:45 【问题描述】:

我正在快速开发。 当我在 Postman/浏览器和移动模拟器上测试它时,我从 Web 服务器得到的响应是不同的。

邮递员/浏览器响应:

items: [
    
    itemId: 500,
    name: "ABC"
    ,
    
    itemId: 500,
    name: "ABC"
    
    ]

iOS 响应:

 items: (
    
    itemId: 500,
    name: "ABC"
    ,
    
    itemId: 500,
    name: "ABC"
    
    )

我想知道如何遍历数组,但由于结果不是 ios 上的 array,我不确定我应该如何去做。此外,我在array 中检索到大约 25-30 个项目的结果。我也有一组变量,它们在数组之后的响应中提供。

【问题讨论】:

为什么说它不是数组呢?这是一个字典数组。不要将 Swift 语法与 JSON 语法或对象的打印方式混为一谈,这只是一种表示,而不是对象本身... 【参考方案1】:

当您打印数组时,您在ios 中的响应没有问题,它将使用() 括号而不是[] 括号打印,并且字典将使用 括号打印。

正如你所说的 let items : [NSDictionary]! 你的 items 数组包含 dictionary 然后你可以像这样迭代它

for item in items 
    print(item["itemId"])
    print(item["name"])

【讨论】:

let items : [NSDictionary]! var items : [NSDictionary]! httpresponsefunc() self.items = response["items"] as! [NSDictionary] 这是你说的吗? @sau123 这将像(, ...)一样打印 是的,我明白了,它会像这样打印。我想知道的是,我们应该如何迭代它?【参考方案2】:

正如其他人所说,您在 iOS 中的反应很好。

你可以简单地迭代它:

for item in items 

// do what you want with each item


它在游乐场中运行良好:

let items = [["itemId": 500, "name" : "ABC"], [ "itemId": 500, "name": "ABC"]] as NSArray


for item in items 
    print(item as! NSDictionary) // prints each dictionary as expected

【讨论】:

【参考方案3】:

你有一个字典数组。所以,你可以像这样迭代-

for itemDict in items 
    let itemId = itemDict["itemId"]
    println("Item ID: \(itemId)")

    let name = itemDict["name"]
    println("Item name: \(name)")

【讨论】:

鉴于println 已被删除,这将不起作用。此外,这将打印“项目 ID:可选(500)”。

以上是关于迭代 JSON,快速的主要内容,如果未能解决你的问题,请参考以下文章

产品设计中的 “快速迭代” 思维

快速排序迭代器要求

多线程 CGD快速迭代

迭代快速排序方法的分区算法问题

转载快速迭代式开发使用方法总结

JAVA集合集合迭代器快速失败行为及CopyOnWriteArrayList