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
.
的 属性
我收到这个错误:
"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
.