解码错误-预期对Dictionary <string,any =“”>进行解码,但是找到了一个数组

时间:2018-08-15 21:19:01

标签: json swift xcode

我是快速编程和Xcode的新手,我尝试使用Json编码将mysql数据从数据库调用到Xcode。我能够成功地调用所有数据(数组),但是当我决定只调用一个值(列)时,说Courses.name,我得到“解码错误-期望对Dictionary进行解码,但是找到了一个数组”。我该如何解决这个问题?我的目标是仅打印course.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()

   }
}

1 个答案:

答案 0 :(得分:1)

  

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

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

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

如果您确定它始终是一门课程,则可以执行以下操作:

print(courses.first!.name)

如果可能有很多课程,您可以打印每个名称:

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