为什么我无法在JSON对象字典中访问变量?

时间:2019-04-26 15:35:59

标签: json swift string dictionary

我将逐层进入JSON对象以获取所需的变量。我已经成功访问​​了项目前几部分中的变量,但是使用完全相同的方法将不允许我访问此特定变量。

我目前已深入约4层,并成功获取了与变量“ defaultsolo”相等的以下数据:

["placetop10": 2512, "minutesplayed": 4249, "lastmodified": 1556152357, "playersoutlived": 28024, "matchesplayed": 5552, "score": 140716, "kills": 39521, "placetop1": 1829, "placetop25": 3050]

以下代码是我尝试访问变量“ minutesplayed”。 defaultsolo的类型为[String:Any],播放的分钟数表明它的类型为String。我的问题是,它一直说defaultSolo [“ minutesplayed”]等于“ nil”,但确实有一个值,如上所示。因此,它永远不会进入下面的逻辑。

if let soloPCResult = defaultSolo["minutesplayed"] as? String {
   //perform logic here with saved variable
}

5 个答案:

答案 0 :(得分:1)

两个简单的JSON规则:

  1. 所有双引号都是String,甚至是"123""false"
  2. 带小数位的数字值为Double,其他为Int

根据规则-没有双引号和小数位-是

if let soloPCResult = defaultSolo["minutesplayed"] as? Int {
   //perform logic here with saved variable
}

答案 1 :(得分:0)

我认为这是一个Int类型

您尝试将此字段设置为Int吗?

if let soloPCResult = defaultSolo["minutesplayed"] as? Int {

答案 2 :(得分:0)

minutesplayed不是字符串。试试:

if let soloPCResult = defaultSolo["minutesplayed"] as? Int {
   //perform logic here with saved variable
}

答案 3 :(得分:0)

您的minutesplayed看起来像是Int,您应该这样做

if let soloPCResult = defaultSolo["minutesplayed"] as? Int {
   //perform logic here with saved variable
}

答案 4 :(得分:0)

也许是因为“分钟播放”是Int而不是String