声明你的结构:
struct MyStruct : Codable {
var title : String
var image : String
var rating : Float
var releaseYear : Int
var genre : [String]?
}
重新制作您的代码,如下所示:
httpRequest(urlForRequest: base_url) { (data: Data?, error: Error?) in
if error == nil {
if let moviesData = data {
guard let jsonString = String(data: moviesData, encoding: .utf8) else {return}
do {
guard let json = try JSONSerialization.jsonObject(with: moviesData) as? [Any] else {return}
let jsonData = try JSONSerialization.data(withJSONObject: json)
let array = try JSONDecoder().decode([MyStruct].self, from: jsonData) as [MyStruct]
print(array)
print(array[0])
// handle your array with `CoreData` values.
} catch {
print(error)
}
}
} else {
print(error?.localizedDescription ?? "error with no description")
}
}
这是处理您的示例:
let r = """
[{ "title": "District 9", "image": "api.androidhive.info/json/movies/2.jpg", "rating": 8, "releaseYear": 2009, "genre": ["Action", "Sci-Fi", "Thriller"] }, { "title": "How to Train Your Dragon", "image": "api.androidhive.info/json/movies/15.jpg", "rating": 8.2, "releaseYear": 2010, "genre": ["Animation", "Adventure", "Family"]}]
"""
do {
let data = r.data(using: .utf8)
guard let json = try JSONSerialization.jsonObject(with: data ?? Data()) as? [Any] else {return}
let jsonData = try JSONSerialization.data(withJSONObject: json)
let array = try JSONDecoder().decode([MyStruct].self, from: jsonData) as [MyStruct]
print(array)
print(array[0])
} catch {
print(error)
}