我正在尝试从此 API (Tracker Network API) 获取总获胜次数,我已经获取了 key ,它会像这样显示 key 和值。
代码如下,我还可以获得获胜次数(整数)以及这些值(标题)。但是,我无法弄清楚如何在不打印所有其他数字的情况下只获得“获胜”数字。
我试过了
print(statsArray[8])
totalWins = statsArray[8]
//["value": 4350, "key": Wins]
print(totalWins.values)
//[Wins, 4350]
但它没有按我希望的方式打印。我希望它只打印出数字,这样我就可以将该数字加载到 UILabel 中。
我要问的是,如何只打印“Wins”(整数)金额而不打印其他 11 个 json 输出?我只想要其中一个数字。
let epicName = "Ninja"
let formattedName = epicName.replacingOccurrences(of: " ", with: "%20")
let platform = "pc"
//pc, xbl, psn
let fortniteChallengesURL3 = URL(string: "https://api.fortnitetracker.com/v1/profile/\(platform)/\(formattedName)")
if let unwrappedURL = fortniteChallengesURL3 {
var request = URLRequest(url: unwrappedURL)
request.addValue("MyKey", forHTTPHeaderField: "TRN-Api-Key")
let dataTask = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data) as! [String:Any]
//print(json)
for (key, value) in json {
if (key == "lifeTimeStats") {
if let statsArray:[ [String : Any] ] = value as? [ [String : Any] ] {
//accessing the 8th but I am getting the output wrong
/*let firstKey = Array( (value as? [ [String : Any] ])!)[8]
*/
print(statsArray[8])
let totalWins = statsArray[8]
//["value": 4350, "key": Wins]
print(totalWins.values)
//[Wins, 4350]
for dict in statsArray {
for (key, value) in dict {
if (key == "key") {
//print ( "\(firstKey.values)")
print ( "keys are \(value)")
}
/*if (key == "value") {
print ( "value are \(value)")
}*/
}
}
}
}
}
} catch let error as NSError {
print(error.localizedDescription)
DispatchQueue.main.asyncAfter(deadline: .now() ) {
}
}
}
}
dataTask.resume()
}
最佳答案
TotalWins 是一个有两个项目的字典,你可以通过它的键访问字典中的任何项目值,所以试试这个:
print(totalWins["value"])
关于json - 如何使用 Swift 访问此 JSON 字典中的特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787520/