【问题标题】:How to access data in array in JSON如何在 JSON 中访问数组中的数据
【发布时间】:2014-12-22 18:20:40
【问题描述】:

JSON:

{
"projects":[
{
"id":113,
"name":"Mobile app Android",
"description":"",
"created_on":"2014-10-03T16:53:56+02:00",
"updated_on":"2014-12-03T16:59:45+01:00"
},
{
"id":142,
"name":"Mobile app iOS",
"created_on":"2014-12-11T18:30:55+01:00",
"updated_on":"2014-12-11T18:30:55+01:00"
},
{
"id":52,
"name":"Test project",
"identifier":"grafikr",
"description":"",
"created_on":"2013-10-14T17:21:33+02:00",
"updated_on":"2014-10-10T17:40:47+02:00"
},
{
"id":37,
"name":"Sample project",
"identifier":"grafikf",
"description":"",
"created_on":"2013-09-18T16:31:25+02:00",
"updated_on":"2013-09-26T13:11:58+02:00"
}
],
"total_count":4,
"offset":0,
"limit":25
}

很容易通过 var name = json["projects"][0]["name"].stringValue

但是如何访问 SwiftyJSON 中的所有名称?如果我创建一个变量 var projects = json["projects"],它会给我:

[
  {
    "id" : 113,
    "created_on" : "2014-10-03T16:53:56+02:00",
    "name" : "Mobile app Android",
    "description" : "",
    "updated_on" : "2014-12-03T16:59:45+01:00"
  },
...

现在我不再有从数据制作 NSDictionary 的问题了,但这让我抓狂。

【问题讨论】:

  • 您不需要像这样使用as 进行投射。 ID 已经是一个字符串。
  • 另外,风格约定是使用驼峰式变量,而不是大写或蛇形大小写。对于init,请尝试使用self.id = id 而不是id = ID
  • 还有一件事——它可能应该是Project(单数,而不是复数)。要一次处理多个项目,请使用一组项目 ([Project])。
  • @matt:id 是 Objective-C 中的保留字,意思是“指向任何类型的 Objective-C 对象的指针”。您永远不应该尝试调用属性或变量“id”。
  • @gnasher729 恕我直言,我知道id 是什么。这是 Swift,而不是 Objective-C。

标签: ios swift alamofire swifty-json


【解决方案1】:

您的代码示例中发生了很多事情——可能太多了,无法通过一个 Stack Overflow 问题/答案来解决。

我强烈建议您返回 Apple 的 Swift 和 iOS 应用程序模式资源。需要重新讨论的主题包括同步与异步编程、身份验证以及将数据源与表视图一起使用。

【讨论】:

  • 我已经修改了答案,请查看这些更改。
【解决方案2】:

这应该可行。您的 json 还包含“total_count”,看着它,我认为这是项目数量的计数。拉出计数,循环直到计数并获取名称。

 var names = [String]()
 let count = json["total_count"].int
 for index in 0..<count {
      let name = json["projects"][index]["name"].string
      names.append(name)
 }

【讨论】:

    【解决方案3】:

    为什么不使用 SwiftyJSONSwifty 方式???

    试试这个:

    let names = json["projects"].arrayValue.map {
        $0["name"].stringValue
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      相关资源
      最近更新 更多