如何使用路径中文件中的数组序列化 JSON 的数组?
How can I serialize Array of JSON with arrays from a file in path?
我使用 Swift 在我的 Xcode 项目中创建了一个 .json 文件。
我需要加载内容并解析以在我的控制器中使用,但是当我尝试将文件内容序列化为 json 对象时,我遇到了解析错误...
我读过另一个类似的问题,但我还没有找到一个类似的 JSON 数组来读取包含不同的结构和另一个 JSON 数组到对象中。
数组JSON的格式为:
[
{
"title": "The App",
"description": "This is the description",
"friends": [
{
"name": "Gary",
"image": "http://",
"description": "Nice"
},
{
"name": "Patri",
"image": "http://",
"description": "Amazing"
},
{
"name": "Lucy",
"image": "http://",
"description": "Up"
}
]
}
]
我正在使用这段代码从包路径中获取文件的内容(data.json 添加到我的项目中)然后序列化,但总是会出错,因为 Friends 包含一个数组 json.
let path = Bundle.main.path(forResource: "data", ofType: "json")
let jsonData = try! Data(contentsOf: URL(fileURLWithPath: path!))
let jsonResult = try! JSONSerialization.jsonObject(with: jsonData, options: []) as? [[String:Any]] //Here is the error parsing the array of Friend of JSON
如何解析包含另一个 json 对象数组的 json 数组?
您需要使用Codable
// MARK: - Element
struct Root: Codable {
let title, purpleDescription: String
let friends: [Friend]
enum CodingKeys: String, CodingKey {
case title
case purpleDescription = "description"
case friends
}
}
// MARK: - Friend
struct Friend: Codable {
let name, image, friendDescription: String
enum CodingKeys: String, CodingKey {
case name, image
case friendDescription = "description"
}
}
let url = Bundle.main.url(forResource: "data", withExtension: "json")
let jsonData = try! Data(contentsOf:url)
let res = try! JSONDecoder().decode([Root].self,from:data)
print(res)
我使用 Swift 在我的 Xcode 项目中创建了一个 .json 文件。 我需要加载内容并解析以在我的控制器中使用,但是当我尝试将文件内容序列化为 json 对象时,我遇到了解析错误...
我读过另一个类似的问题,但我还没有找到一个类似的 JSON 数组来读取包含不同的结构和另一个 JSON 数组到对象中。
数组JSON的格式为:
[
{
"title": "The App",
"description": "This is the description",
"friends": [
{
"name": "Gary",
"image": "http://",
"description": "Nice"
},
{
"name": "Patri",
"image": "http://",
"description": "Amazing"
},
{
"name": "Lucy",
"image": "http://",
"description": "Up"
}
]
}
]
我正在使用这段代码从包路径中获取文件的内容(data.json 添加到我的项目中)然后序列化,但总是会出错,因为 Friends 包含一个数组 json.
let path = Bundle.main.path(forResource: "data", ofType: "json")
let jsonData = try! Data(contentsOf: URL(fileURLWithPath: path!))
let jsonResult = try! JSONSerialization.jsonObject(with: jsonData, options: []) as? [[String:Any]] //Here is the error parsing the array of Friend of JSON
如何解析包含另一个 json 对象数组的 json 数组?
您需要使用Codable
// MARK: - Element
struct Root: Codable {
let title, purpleDescription: String
let friends: [Friend]
enum CodingKeys: String, CodingKey {
case title
case purpleDescription = "description"
case friends
}
}
// MARK: - Friend
struct Friend: Codable {
let name, image, friendDescription: String
enum CodingKeys: String, CodingKey {
case name, image
case friendDescription = "description"
}
}
let url = Bundle.main.url(forResource: "data", withExtension: "json")
let jsonData = try! Data(contentsOf:url)
let res = try! JSONDecoder().decode([Root].self,from:data)
print(res)