I get an Swift Decoding error: parsing JSON, found an Array expected a Dictionary?

I get an Swift Decoding error: parsing JSON, found an Array expected a Dictionary?

我收到这个错误:

"typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))"

在 swift 中解码 JSON(来自 django rest 框架)。

这是json:

[
    {
        "id": 1,
        "title": "1e todo",
        "description": "1e todo test"
    },
    {
        "id": 2,
        "title": "2e todo",
        "description": "2e todo test"
    }
]

这是Swift中的解析函数:

func parseJSON(todoData:Data){
    let decoder = JSONDecoder()
    do{
        let decodedData = try decoder.decode(ToDoData.self, from: todoData)
        fetchedTitle = decodedData.todoitems[1].title
        print(fetchedTitle)

以及 Swift 中的结构:

import Foundation

struct ToDoData: Decodable {
    //return een list met ToDoData
    let todoitems: [Items]
}

struct Items: Decodable {
    //return een list met ToDoData
    let id: String
    let title: String
    let description: String
}

所以它说找到了一个数组,但是我怎样才能找到 JSON 文件中的“标题”。

您的 json 似乎是 Items 的数组,而不是具有名为 todoitems 的 属性 的对象,所以改为这样做:

let decodedData = try decoder.decode([Items].self, from: todoData)
fetchedTitle = decodedData[1].title

您的 ToDoData 结构无法在这种情况下使用,因为您的 json 不包含名为 todoitems.

的 属性