【发布时间】:2021-04-20 18:23:05
【问题描述】:
我试图在我突出显示的嵌套 JSON 中获取“图像”值字符串(事件/表演者/图像)
{
"events":[
{
"type":"minor_league_baseball",
"id":4997345,
"datetime_utc":"2021-04-20T07:30:00",
"venue":{
"state":"FL",
"name_v2":"Joker Marchant Stadium",
"postal_code":"33805",
"name":"Joker Marchant Stadium",
"links":[
],
"timezone":"America\/New_York",
"url":"https:\/\/seatgeek.com\/venues\/joker-marchant-stadium\/tickets",
"score":0.689039,
"location":{
"lat":28.0739,
"lon":-81.9533
},
"address":"2301 Lakeland Hills Blvd.",
"country":"US",
"has_upcoming_events":true,
"num_upcoming_events":43,
"city":"Lakeland",
"slug":"joker-marchant-stadium",
"extended_address":"Lakeland, FL 33805",
"id":3929,
"popularity":0,
"access_method":null,
"metro_code":539,
"capacity":8500,
"display_location":"Lakeland, FL"
},
"datetime_tbd":true,
"performers":[
{
"type":"minor_league_baseball",
"name":"Lakeland Flying Tigers",
"image":"https:\/\/seatgeek.com\/images\/performers-landscape\/lakeland-flying-tigers-a24bed\/9431\/huge.jpg",
"id":9431,
"images":{
"huge":"https:\/\/seatgeek.com\/images\/performers-landscape\/lakeland-flying-tigers-a24bed\/9431\/huge.jpg"
},
我在这里有我的结构,但是一旦我尝试从“表演者”转到“ImageLink/image”,我的主 ViewController 中就会出现(类型为“[ImageLink]”的值没有成员“图像”)错误
import Foundation
struct Entry: Codable {
let events: [EventsData]
}
struct EventsData: Codable {
let type: String
let id: Int
let title: String
let venue: locationInfo
let performers: [ImageLink]
}
struct ImageLink: Codable {
let image: String
}
struct locationInfo: Codable {
let display_location: String!
// let state: String
// let name_v2: String
}
当我试图获取特定的图像字符串值时,我收到错误('[ImageLink]' 类型的值没有成员'image')。
import UIKit
类视图控制器:UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string:"https://api.seatgeek.com/2/events?client_id=MjE3NTI2Nzd8MTYxODg1NzkwOS44ODcxODE4") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
let jsonDecoder = JSONDecoder()
do {
let parsedJSON = try jsonDecoder.decode(Entry.self, from: data)
for entryData in parsedJSON.events {
print(entryData.performers.image)
print(entryData.id)
print(entryData.title)
print(entryData.venue.display_location+"\n")
}
} catch {
print(error)
}
}
}.resume()
}
}
}
我是 JSON 新手,对于新手问题,我深表歉意 :) 提前感谢任何可以帮助我理解如何做到这一点的人。
编辑工作:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string:"https://api.seatgeek.com/2/events?client_id=MjE3NTI2Nzd8MTYxODg1NzkwOS44ODcxODE4") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
let jsonDecoder = JSONDecoder()
do {
let parsedJSON = try jsonDecoder.decode(Entry.self, from: data)
for entryData in parsedJSON.events {
print(entryData.id)
print(entryData.title)
print(entryData.venue.display_location+"\n")
print(entryData.performers.first!.image)
}
} catch {
print(error)
}
}
}.resume()
}
}
}
【问题讨论】:
-
performers 是一个包含五个键的字典数组。