繁体   English   中英

在swift中使用JSON数组

Using JSON Arrays in swift

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我无法访问存储在JSON API内部的信息,只要它位于[]括号内而不是{}括号内。 我正在尝试搜索数组并找到匹配"job": "director"{}集合"job": "director" 问题是如果我没有使用诸如CollectionView之类的IndexPath视图,我无法访问位于[]括号内的信息。

JSON:

"crew": [
{
  "credit_id": "57ea3a02c3a3687edc00080a",
  "department": "Directing",
  "gender": 2,
  "id": 51329,
  "job": "Director",
  "name": "Bradley Cooper",
  "profile_path": "/z5LUl9bljJnah3S5rtN7rScrmI8.jpg"
},
{
  "credit_id": "57ea3a14c3a3687ff9007bd7",
  "department": "Writing",
  "gender": 2,
  "id": 51329,
  "job": "Screenplay",
  "name": "Bradley Cooper",
  "profile_path": "/z5LUl9bljJnah3S5rtN7rScrmI8.jpg"
},
{
  "credit_id": "57ea3a27925141108f008807",
  "department": "Writing",
  "gender": 2,
  "id": 224385,
  "job": "Screenplay",
  "name": "Will Fetters",
  "profile_path": null
}
],

这是我的代码的一部分:

struct Cast: Codable {
    let character: String
    let name: String
    let profile_path: String?
}

struct Crew: Codable {
    let name: String
    let profile_path: String?
    let job: String
}

func loadCredits() {

    let id = filmId
    let apiKey = ""
    let url = URL(string: "https://api.themoviedb.org/3/movie/\(id)/credits?api_key=\(apiKey)")
    let request = URLRequest(
        url: url! as URL,
        cachePolicy: URLRequest.CachePolicy.reloadIgnoringLocalCacheData,
        timeoutInterval: 10 )

    let session = URLSession (
        configuration: URLSessionConfiguration.default,
        delegate: nil,
        delegateQueue: OperationQueue.main
    )

    let task = session.dataTask(with: request, completionHandler: { (dataOrNil, response, error) in
        if let data = dataOrNil {
            do { let credit = try! JSONDecoder().decode(Credits.self, from: data)
                self.filmCast = credit.cast
                self.filmCrew = credit.crew


                self.castCollection.reloadData()

            }
        }

        self.castCollection.reloadData()

    })

    task.resume()
}

我可以使用它来通过索引路径访问信息:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = castCollection.dequeueReusableCell(withReuseIdentifier: "castCell", for: indexPath) as! CastCell

        let credit = filmCast[indexPath.row]
        let name = credit.name

        cell.castName.text = name


        return cell


}

但是我在搜索数据时遇到了麻烦,因为它没有位于诸如UICollectionView之类的IndexPath视图中。

因此,如果我想在我正在尝试的集合Director之外搜索Directorjob

if filmCrew.job == "Director" {
 perform action here
  }

我收到错误:

类型'[DetailsView.Crew]'的值没有成员'job'

所以我的问题是如何正确通过JSON阵列搜索来查找匹配{}基础上,匹配值数据。 很抱歉,如果这个问题听起来很愚蠢或令人困惑,那么自从使用字典和数组以来,我就遇到了这个问题。 当我在表和集合视图中对其进行索引时,它总是工作正常,但我似乎无法弄清楚如何筛选数组。

1 个回复

您的条件需要通过整个filmCrew数组并找到第一个拥有"Director"作业的用户,幸运的是有一种方法可以做到这一点。

if let director = filmCrew.first(where: { $0.job == "Director" }) {
    //perform action here
}
1 在Swift中使用Gloss解析JSON数组

这是我正在使用的JSON 我正在使用Gloss库来解析此JSON,对于解析“数据”我没有任何问题,但是当涉及到像“结果”这样的数组时,我会遇到一些麻烦。 有我的结构: 和: 我有要求我正在使用Alamofire: 当我打印“ my_data”时,Hoze_r ...

2 如何在Swift中使用数组根解码JSON

我正在尝试解析我从api请求获得的一些数据。 问题是,所有值都没有标签。 我想为每个值添加标签,以便稍后在程序中引用标签。 //数据样本 {“错误”:[],“结果”:{“ firsBatch”:[ [21,“ 93423.5”,“ 324.5”,“ 21.0”,“ ...

4 如何在Swift 3中使用Struct数组生成JSON?

我有问题从Swift3的struct数组生成JSON 。 我在Stack Overflow搜索,没有任何帮助(这里是截图 )。 我有这样的struct : 和该结构的数组: 当数组不为空,然后我尝试在另一个类中打印它时,它会在调试器中显示: 该数组不是有效的JSON ...

5 在Swift 3中使用嵌套数组解析JSON

我发现在Swift 3中解析JSON这个问题非常有帮助,但是我注意到我的JSON结构具有用于“天气”键的数组(请参见红色箭头)。 我能够解析JSON输出的其他部分,但是此数组引起了问题。 问题:为什么我不能使用在此JSON数据的其他部分上起作用的[String:Any]模式? 这 ...

6 在Swift 5中使用Codable解码JSON数组

我花了很多时间在SO / Web上查看示例,但是看不到我做错了什么。 我有一个REST服务器返回以下JSON: 以及以下表示此数据的类: 以下代码使用Alamofire 4.0调用服务器,然后使用Swift中的JSON解码功能处理响应: “ ok”和“ error” ...

7 在Swift中使用数组

刚刚开始使用Swift,我对一些元素感到生气。 首先,大多数标准的东西都是结构而不是对象,这意味着它们像我习惯的那样作为值而不是指针传递。 另一件事是使用可选元素系统真的很烦人。 如果我试图声明一个数组而不在其中添加任何内容,我声明它是这样的: 为了把任何东西放进去,我会这样声 ...

8 使用Swift从JSON提取数组

Java经验丰富,但是Swift相对n00b。 我有以下JSON,无法从中提取“ images”数组,该数组最多可以包含3张图片... 我一直遇到很多编译时和运行时错误。 例如,来自SwiftyJSON文档的以下代码: 正确打印出“路径”的值,但尝试将该值保存在我的[Stri ...

9 在 Swift 的结构中使用数组

我有以下结构,其中使用了 string、Int 和 Bool。 当我从 Firestore 查询我的产品时,我会填充这些变量。 现在我不知道如何在我的结构中处理数组: 当我从我的数据库中查询我的类别时; 它看起来像这样: 不知道如何在我在这里提到的结构的每个部分中调用类别。 新手提醒! ...

10 在Swift中使用数组的方法?

我已经阅读了这本书,我可以在实践中看到有两种方法来设置数组。 第一个是: 稍后将为您提供不同的语法,例如删除对象: 你也可以设置一个这样的数组: 并删除对象: 我不确定哪个是对的,为什么你有2个,我应该使用哪个 ...

2016-06-01 07:23:52 4 72   swift
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM