Swift:JSON属性转换 - 将不同的JSON数据类型转换为相同的Swift数据类型

时间:2016-09-17 18:56:33

标签: php json swift swift3

在尝试使用PDO使用PHP / MySQL生成的JSON提要时,我遇到了一个有趣的问题。默认情况下,查询的结果,例如SELECT COUNT(id) FROM table name作为String返回,但是当我对结果进行任何数学计算时,例如$result = $result + 1;结果是'正确'数据类型。

在PHP中,这没有问题,但我正在使用JSON将这些结果发送到我的iOS应用程序,所以虽然我知道我想在iOS中使用什么数据类型,但我不知道它会是什么类型的当它到达我的时候。例如,我想这样做:

if let json = jsonResult as? [String:Any] {
    let score = jsonData["score"] as? Int ?? 0
    let years = jsonData["years"] as? String
}

可是:

  1. 如果score是JSON中的String(例如score:"7"),则score最终将为0
  2. 如果years是JSON中的Integer(例如years:2015),则年数最终将为nil
  3. 我意识到使JSON正确是实现这一目标的最佳方法,但是在iOS中有可靠的方法吗?为了这个问题,假设我无法更改JSON。

    我理想地寻找一个合理的单行,这将允许我转换为正确的数据类型,无论它以前是什么类型(即在上面的示例中years将成为{{1无论是JSON中的String还是String,无论是Int还是{{1},得分都将成为Int在JSON中)?

    非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我认为你可以像

那样思考
let score = Int(jsonData["score"] as? String)