저는 JSON 피드를 처음 사용하고 신속하게 4 개를 사용했습니다. 중첩 된 JSON 피드에서 데이터를 인쇄하는 데 문제가 있습니다. 첫째, 배열 문을 제대로 호출하는지 확신 할 수 없습니다. 둘째, 앱을 만들 때 다음과 같은 긴 오류가 발생합니다. 누구든지 이걸 해독하도록 도와 줄 수 있습니까? 내 코드는 게시물 하단에 있습니다. 미리 감사드립니다.중첩 된 JSON 피드 반환 오류
2017-12-06 12:58:48.604154-0500 PlayerRankDOTA2[91584:6694163] [BoringSSL] Function boringssl_context_get_peer_sct_list: line 1754 received sct extension length is less than sct data length Error jsonErr dataCorrupted(Swift.DecodingError.Context(codingPath: [PlayerRankDOTA2.PlayerStatsParent.(CodingKeys in _053A446F694D6B16CE13A0E302B3B14A).rankings, Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: "Index 0", intValue: Optional(0)), PlayerRankDOTA2.PlayerStats.(CodingKeys in _053A446F694D6B16CE13A0E302B3B14A).score], debugDescription: "Parsed JSON number <3099.96838722024> does not fit in Int.", underlyingError: nil))"
import UIKit
struct PlayerStatsParent:Decodable{
let rankings: [PlayerStats]
}
struct PlayerStats:Decodable {
let personaname: String
let score: Int
let solo_competitive_rank: Int
let avatar: String
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let jsonUrlString = "https://api.opendota.com/api/rankings"
guard let url = URL(string: jsonUrlString) else {return}
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else {return}
//let dataAsString = String(data: data, encoding: .utf8)
//print(dataAsString)
do{
let playerStatsParent = try JSONDecoder().decode(PlayerStatsParent.self, from: data)
print(playerStatsParent.rankings)
} catch let jsonErr {
print("Error jsonErr", jsonErr)
}
}.resume()
}
let jsonUrlString = "https://api.opendota.com/api/rankings"
}
디코딩하려고하는 JSON 응답을 포함하십시오. –
PlayerStats 구조체의 모든 변수를 기록하려고하지만 PlayerStatsParent 구조체의 순위 변수에 저장됩니다. –
API에서받은 실제 JSON을 의미합니다 ... 디코딩하려는 내용을 보지 않고 무엇이 잘못 됐는지를 말하기는 어렵습니다. –