我能';我不能用Swift解码JSON文件,即使这样我也可以将其读入数据对象
我对斯威夫特很陌生。我在Xcode中创建了一个简单的终端应用程序,以了解如何解码JSON文件。即使我能够将文件读入数据对象,我也无法为我的结构解码它:我能';我不能用Swift解码JSON文件,即使这样我也可以将其读入数据对象,json,swift,Json,Swift,我对斯威夫特很陌生。我在Xcode中创建了一个简单的终端应用程序,以了解如何解码JSON文件。即使我能够将文件读入数据对象,我也无法为我的结构解码它: struct Person: Codable { var name: String var surname: String } 这是我的结构: struct Person: Codable { var name: String var surname: String } 以下是我的简单JSON文件: [
struct Person: Codable
{
var name: String
var surname: String
}
这是我的结构:
struct Person: Codable
{
var name: String
var surname: String
}
以下是我的简单JSON文件:
[
{
"name": "Abc",
"surname": "Def"
}
]
let url = URL(fileURLWithPath: "/Users/abcd/Documents/test.json")
if let data = try? Data(contentsOf: url)
{
print(data) // prints size (in bytes) the data correctly
if let person = try? JSONDecoder().decode(Person.self, from: data)
{
print(person) // did not printed
}
}
这是我解码JSON文件的Swift代码:
[
{
"name": "Abc",
"surname": "Def"
}
]
let url = URL(fileURLWithPath: "/Users/abcd/Documents/test.json")
if let data = try? Data(contentsOf: url)
{
print(data) // prints size (in bytes) the data correctly
if let person = try? JSONDecoder().decode(Person.self, from: data)
{
print(person) // did not printed
}
}
JSON包含一个数组。相应地,您也应该在代码中使用一个:
if let persons = try? JSONDecoder().decode([Person].self, from: data)
...
出于某种原因,json是一个数组。从文件中删除周围的括号[],或者将解码更改为
[Person].self
。解码时不要使用try?
,尤其是在学习swift解码时。用正确的do/catch环绕解码并打印error@JoakimDanielson非常感谢。