'Issues parsing json from imgut

I am able to parse and decode data coming from IMGUR website. However when I try to print out one of the properties from Data it doesn’t show anything. How do I fix this? Also I want to access the contents of images, specifically the links. How can I access the contents Of the image since it’s an array?

struct PhotoResponse:Codable {
    let success: Bool
    let status: Int
    let data: [Data]
}

struct Data:Codable {
    let id: String
    let title: String
    let views: Int
    let link: String
    let images: [Image]?
    let animated: Bool?
}


struct Image: Codable {
    let id: String
    let imageDescription: String?
    let link: String?
    let size: Int
}
class NetworkService{
    static let shared = NetworkService()
    private let baseURL = "https://api.imgur.com/3/gallery"
    private init() {}
    
    
    func getJSON( searchName: String, completion: @escaping([Data]) -> Void){
        let endPoints = baseURL + "/search/time/week/?q=\(searchName)"
        guard let url = URL(string: endPoints ) else{
            return
        }
        var request =  URLRequest(url: url)
        let headers = ["Authorization": ""]
        
        request.httpMethod = "GET"
        request.allHTTPHeaderFields = headers
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("application/json", forHTTPHeaderField: "Accept")
        
        URLSession.shared.dataTask(with: request) { data, response, error in
            if let error = error {
                print("Failed to query database", error)
            }
            guard let data = data else {
                print("Data not received\(String(describing: error))")
                return
            }
            let decoder = JSONDecoder()
            do{
                let decodedJson = try decoder.decode(PhotoResponse.self, from: data)
                DispatchQueue.main.async {
                    completion(decodedJson.data)
                }

            }catch let error{
                print("Json failed to decode\(String(describing: error))")
                return
            }
        }.resume()
    }
 
}

NetworkService.shared.getJSON(searchName: "cat") {  (photos) in
            for photo in photos {
                print(photo.title)
                print(photo.id)
            }


Solution 1:[1]

Swift already has a Data struct, try renaming yours to something else, like MyData. Do the same with Image.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 workingdog support Ukraine