Swift 将JSON AnyObject转换为Int64

Swift 将JSON AnyObject转换为Int64,swift,Swift,这与这个问题有些关联: 有没有办法将AnyObject类型转换为Int64?我通过JSON收到了一个巨大的数字,这个数字以“AnyObject”的形式到达我的类-我如何将它转换为Int64-xcode只是说这是不可能的 您可以使用as type cast运算符将AnyObject强制转换为Int,但要向下转换为不同的数值类型,您需要使用目标类型的初始值设定项 var o:AnyObject = 1 var n:Int = o as Int var u:Int64 = Int64(n) JSON

这与这个问题有些关联:


有没有办法将AnyObject类型转换为Int64?我通过JSON收到了一个巨大的数字,这个数字以“AnyObject”的形式到达我的类-我如何将它转换为Int64-xcode只是说这是不可能的

您可以使用as type cast运算符将AnyObject强制转换为Int,但要向下转换为不同的数值类型,您需要使用目标类型的初始值设定项

var o:AnyObject = 1
var n:Int = o as Int
var u:Int64 = Int64(n)

JSON编号是
NSNumber
,因此您需要通过它

import Foundation
var json:AnyObject = NSNumber(longLong: 1234567890123456789)

var num = json as? NSNumber
var result = num?.longLongValue
请注意,
result
Int64?
,因为您不知道此转换会成功。

请尝试使用Swift处理JSON数据的更好方法

let json = SwiftJSON.JSON(data: dataFromServer)

if let number = json["number"].longLong {
    //do what you want
} else {
    //print the error message if you like
    println(json["number"])
}

正如@Rob Napier的回答所说,您正在处理的是
NSNumber
。如果您确定您有一个有效的,您可以这样做以获得
Int64

(json["key"] as! NSNumber).longLongValue

但在32位平台上,int小于int64。。。这意味着我会以这种方式丢失信息,还是我错了?SwiftyJSON(目前)比手工处理要慢得多。