JSON的数值是swift中的字符串吗?

时间:2017-09-06 15:11:05

标签: json swift type-conversion

我从服务器获取json,我需要在swift代码中将id字段转换为字符串。

问题是json有时返回"12345",有时会返回12345(带或不带引号)。

是否可以在不检查值类型并检查转换结果是否为nil的情况下解决此问题?

已更新

我用于检查转换结果的代码示例:

let result = (some_index as? String) ?? String(some_index as! Int)

问题出在Objective-C,你有[NSString stringWithFormat:@"%@", some_object]。但是在swift中你有选项,它会尝试在结果中插入“optional”字样。

已更新

使用关于期权的随机答案来阻止垃圾邮件。问题是具体的 - “如何简单地解开看起来像String,Int或根本不存在的json值?”

swift How to remove optional String Character

在这个问题中,他们会询问如何转换Int? -> IntString? -> String和类似内容。在我的情况下,我不知道我是否有Int?String?作为初始类型。

1 个答案:

答案 0 :(得分:0)

StringInt都符合CustomStringConvertible,因此您可以选择将值向下转发到CustomStringConvertible并使用字符串插值

let dict : [String:Any] = ["Foo" : 12345]

if let value = dict["Foo"] as? CustomStringConvertible {
    let result = "\(value)"
}

并指责Web服务的所有者发送不一致的数据; - )