【问题标题】:Issue to get data in object from local file从本地文件获取对象中的数据的问题
【发布时间】:2019-05-11 22:24:56
【问题描述】:

我正在使用UITableView 并尝试从本地 .json 文件加载数据。

我的 .json 文件名为 Result.json。但我无法使用 JSONDecoder().decode 获取 json 数据。

Result.json 有一个名为“result”的数组。我必须将该结果添加到我的 self.resultArray 中。

我已经尝试了一些代码:

  let url = Bundle.main.url(forResource: "Result", withExtension: "json")!
        let jsonData = try! Data(contentsOf: url)
        do {
            let jsonFromWeb = try JSONDecoder().decode(JSONFromWeb.self, from: jsonData)
            DispatchQueue.main.async {
                self.resultArray = jsonFromWeb.result
                self.tableView.reloadData()
            }
        } catch {
            print(error)
        }

【问题讨论】:

  • 什么问题?并发布json内容,模型JSONFromWeb
  • 我无法在 jsonFromWeb 中获取数据。我不知道我错在哪里。它进入捕获错误。
  • @KunwarJungSaroj 您需要edit您的问题提供更多详细信息。运行此代码时实际发生了什么?假设您使用调试器单步执行此代码,它哪里出错了?显示什么消息?把这些细节放在你的问题中。

标签: ios json swift jsondecoder


【解决方案1】:

你不需要使用JSONDecoder

请检查我更新的代码:

   let jsonData = try! Data(contentsOf: url, options: .mappedIfSafe)
      do {
      let jsonFromWeb = try JSONSerialization.jsonObject(with: jsonData)

      DispatchQueue.main.async {
        self.resultArray = jsonFromWeb.result
        self.tableView.reloadData()
      }
 } catch {
      print(error)
 }

注意:您必须序列化您的 JSON。

【讨论】:

  • 什么是resultjsonFromWeb 将是一个数组或字典。两者都没有result 属性。这个答案没有试图解释 OP 代码中的错误,也没有试图解释为什么这个答案可以解决问题。
  • 我只是帮助他使用路径从 json 文件中获取数据,我帮助@Kunwar Jung Saroj 使用序列化 Json 而不是 JSONDecoder 的更新代码。
  • 这段代码无法编译,并不比Decoder
  • 但是这段代码不能编译,也不能解释任何东西。好的答案应该有效,好的答案应该解释。
  • @Kunwar - 不要仅仅因为它已经发布就接受它。只接受能真正解决您的问题的答案。
猜你喜欢
  • 2023-01-07
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多