我是服务器端swift的新手。我使用steam来服务器端swift。在蒸汽请求中,我需要将JSON作为[String:Any]来检查值的数据类型,如String,Int或Float。但是在请求中我无法找到值的确切数据类型。
drop.post("post") { (request) -> ResponseRepresentable in
guard let name = request.data["value"]?.string else {
throw Abort.badRequest
}
return value
}
在上面的方法中,它直接转换并返回值为String。我需要检查它是String还是Int(其他一些数据类型)。我无法按照下面给出的条件进行检查。
guard let name = data["value"] as? String else {
\\do something
}
我需要检查它是String还是Int(其他一些数据类型)。如果有人有解决方案,请告诉我。
答案 0 :(得分:0)
如果你尝试使用类型(of :)函数获取数据类型,结果你会得到这样的可选项。
let dic = ["key":"string"] as [String : Any]
let str = dic["key"] //"string"
type(of: str) //Optional<Any>.Type
你必须检查&#34;如果让&#34;对于所有情况。
let dic = ["key":"string"] as [String : Any]
if let str = dic["key"] as? String {
print("String value")
} else if let intvalue = dic["key"] as? Int {
print("Int value")
} else if let boolvalue = dic["key"] as? Bool {
print("Bool value")
}
希望它能帮到你
答案 1 :(得分:0)
由于您正在访问JSON,我会这样做。
guard let json = request.json else {
throw ...
}
if let string = json.string {
// JSON is a string
} else if let object = json.object {
// JSON is a [String: JSON]
}
// continue unwrapping for different data types
我不建议为此目的使用type(of:)
功能。