在Swift 2中将JSON转换为数组

为生活而工作

我需要构建Arrays一个Grouped UITableView,在每个表单元格中都有一个Title和Detail行。我从服务器获取了json输出,并将其设置为正确的形状以迭代这些UITableViewDataSource方法。但是将这些转换为这些UITableView函数可以引用的可读数组的最简单方法是什么?

标题数组用于组标题,因此它只是一维数组。我可以迭代。标题和详细信息数组都是二维的。我不知道如何在Swift中做到这一点。

"headings":["Tuesday, August 16, 2016","Wednesday, August 17, 2016","Thursday, August 18, 2016","Friday, August 19, 2016","Saturday, August 20, 2016","Sunday, August 21, 2016","Monday, August 22, 2016","Tuesday, August 23, 2016","Wednesday, August 24, 2016","Thursday, August 25, 2016","Friday, August 26, 2016","Saturday, August 27, 2016","Sunday, August 28, 2016","Monday, August 29, 2016","Tuesday, August 30, 2016","Wednesday, August 31, 2016","Thursday, September 1, 2016","Friday, September 2, 2016","Saturday, September 3, 2016","Sunday, September 4, 2016","Monday, September 5, 2016","Tuesday, September 6, 2016","Wednesday, September 7, 2016","Thursday, September 8, 2016","Friday, September 9, 2016","Saturday, September 10, 2016","Sunday, September 11, 2016","Monday, September 12, 2016","Tuesday, September 13, 2016","Wednesday, September 14, 2016","Thursday, September 15, 2016","Friday, September 16, 2016"],

"titles":[["Joe Johnson"],["Joe Johnson"],["Sandy Primmell","Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Sandy Primmell","Joe Johnson"],["Joe Johnson","Joe Johnson"],["Sandy Primmell","Joe Johnson"],["Mark Greene","Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Sandy Primmell","Joe Johnson"],["Joe Johnson"],["Sandy Primmell","Joe Johnson"],["Mark Greene","Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"],["Joe Johnson"]],

"details":[["OFF"],["OFF"],["Gregory","OFF"],["Gregory"],["OFF"],["OFF"],["OFF"],["Weekday Rounders","OFF"],["Weekday Rounders","Night Owls"],["Gregory","OFF"],["Gregory","OFF"],["OFF"],["OFF"],["OFF"],["Gregory"],["Gregory","OFF"],["Gregory"],["Gregory","OFF"],["Gregory","OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"],["OFF"]]

更新

这是我的Alamofire异步功能,可获取数据:

manager.request(.POST, getRouter(), parameters:["dev": 1, "app_action": "schedule", "type":getScheduleType(), "days_off":getScheduleDaysOff(), "period":getSchedulePeriod(), "begin_date":getScheduleBeginDate(), "end_date":getScheduleEndDate()])
        .responseString {response in
            print(response)
            var json = JSON(response.result.value!);
// what I'm missing
   }
艾哈迈德·巴拉卡特(Ahmad Baracat)

另外,您可以使用诸如ArgoSwiftyJSON之类的JSON解析库,其创建目的是简化JSON解析。它们都经过了良好的测试,可以为您处理极端情况,例如JSON响应中缺少参数等。

使用Argo的示例:

假设JSON响应具有这种格式(来自Twitter API

{
  "users": [
    {
      "id": 2960784075,
      "id_str": "2960784075",
      ...
    }
}

1-创建一个Swift类来表示响应

请注意,Response该类包含一个数组,User数组是另一个未在此处显示的类,但是您已经明白了。

struct Response: Decodable {
    let users: [User]
    let next_cursor_str: String

    static func decode(j: JSON) -> Decoded<Response> {
        return curry(Response.init)
            <^> j <|| "users"
            <*> j <| "next_cursor_str"
    }
}

2-解析JSON

//Convert json String to foundation object
let json: AnyObject? = try? NSJSONSerialization.JSONObjectWithData(data, options: [])

//Check for nil    
if let j: AnyObject = json {
  //Map the foundation object to Response object
  let response: Response? = decode(j)
}

使用Swifty的示例

官方文档中所述

1-将JSON字符串转换为SwiftyJSON对象

if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
    let json = JSON(data: dataFromString)
}

2-访问特定元素

如果数据是数组,则使用索引

//Getting a double from a JSON Array
let name = json[0].double

如果数据是字典,则使用密钥

//Getting a string from a JSON Dictionary
let name = json["name"].stringValue

2'-遍历元素

大批

//If json is .Array
//The `index` is 0..<json.count's string value
for (index,subJson):(String, JSON) in json {
    //Do something you want
}

字典

//If json is .Dictionary
for (key,subJson):(String, JSON) in json {
   //Do something you want
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在swift3中将json数据转换为数组

来自分类Dev

在Swift 3中将C数组PTR转换为本机数组

来自分类Dev

在swift 3中将“任何”数组转换为字符串

来自分类Dev

在 Swift/Xcode 中将 JSON 文件转换为数组

来自分类Dev

在 Swift 中将数组元素转换为合适的 json

来自分类Dev

Swift 5:将JSON对象数组转换为Swift结构

来自分类Dev

在Swift中将2DArray转换为集合数组

来自分类Dev

在Swift中将2DArray转换为集合数组

来自分类Dev

如何在Swift 2中将结构转换为Anyobject?

来自分类Dev

如何在Swift2 2.0中将字符串转换为Date

来自分类Dev

在Swift3中将一维数组转换为二维数组的效率如何

来自分类Dev

在Swift中将数组转换为特定类型

来自分类Dev

在Swift中将JSON转换为NSData和将NSData转换为JSON

来自分类Dev

将 4 JSON Swift 转换为字典数组

来自分类Dev

在Swift中将String转换为JSON String

来自分类Dev

在Swift中将JSON对象转换为Model

来自分类Dev

在Xcode 8(Swift 3)中将Swift数组转换为CFArray

来自分类Dev

无法在swift2中将字符串类型的值转换为预期的参数类型int

来自分类Dev

将本机Swift Set转换为数组

来自分类Dev

将NSSet转换为Swift数组

来自分类Dev

将简单变量转换为数组 (Swift)

来自分类Dev

将 Swift 数组转换为 Realm 的结果

来自分类Dev

在Swift中将String数组转换为CGFloat数组

来自分类Dev

将JSON变量转换为Swift变量

来自分类Dev

Swift-如何将Swift数组转换为NSArray?

来自分类Dev

在Swift中将字节数组转换为UIImage

来自分类Dev

在Swift中将UIImage转换为UInt8数组

来自分类Dev

如何在Swift中将String转换为float数组

来自分类Dev

在 Swift 中将任何字典数组转换为字符串

Related 相关文章

热门标签

归档