json - 解码错误——应该解码 Dictionary<String, Any> 但发现了一个数组

标签 json swift xcode

我是 swift 编程和 Xcode 的新手,我尝试使用 Json 编码将数据库中的 mysql 数据调用到 Xcode。我能够成功调用所有数据(数组),但是当我决定只调用一个值(列)时,说 Courses.name 我得到“解码错误 - 预期解码字典但找到了一个数组。”我该如何解决这个问题?我的目标是只打印 courses.name

import UIKit

struct Course: Decodable {
let id: String
let name: String
let member:  String

 }

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    let jsonUrlString = "http://oriri.ng/aapl/service.php"
    guard let url = URL(string: jsonUrlString) else
    { return }

    URLSession.shared.dataTask(with: url) { (data, response, err) in

        guard let data =  data else{ return }

        do {

            let courses = try JSONDecoder().decode(Course.self, from: data)
            print(courses.name)


        } catch let jsonErr {
            print("Error serializing json:", jsonErr)
        }

    }.resume()

   }
}

最佳答案

[{"id":"1","name":"sobande_ibukun","member":"blue"}]

周围的[]表示它是一个数组。使用以下代码解码,它应该可以工作:

let courses = try JSONDecoder().decode([Course].self, from: data)

如果您确定它永远是一门类(class),您可以:

print(courses.first!.name)

如果可能有很多类(class),你可以打印每个名字:

courses.forEach { course in print(course.name) }

关于json - 解码错误——应该解码 Dictionary<String, Any> 但发现了一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866586/

相关文章:

ios - 如何将 didFinishEditing (textField) 与自定义单元格一起使用?

ios - Launchimage 和 Appicon 未添加到 Xcode 8.3.3 中的 assets.xcassets

java - 如何使用 Bolt 使用 Json 进行转换?

ios - 将 Javascript 注入(inject) Webview - Swift

ios - 如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly

ios - 在 Xcode 9 中构建时更改 AppIcon

ios - yarn run ios 运行模拟器但不显示应用程序图标

javascript - 如何向传递给 gulp.src 的 glob 添加路径前缀?

php - 从 API 检索信息

json - angularfire 中的自定义数据树名称