【问题标题】:JSON's numeric value to string in swift?JSON的数值快速转换成字符串?
【发布时间】:2018-02-15 03:45:03
【问题描述】:

我从服务器获取 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 中,您有选项,它会尝试在结果中插入单词“可选”。

更新

停止垃圾邮件,随机回答关于选项的问题。问题很具体——“如何简单地解开可能看起来像 String、Int 或根本不存在的 json 值?”

swift How to remove optional String Character

在这个问题中,他们询问如何转换 Int? -> IntString? -> String 和类似的。就我而言,我不知道我是否将 Int?String? 作为初始类型。

【问题讨论】:

  • 用您当前的相关代码更新您的问题,并清楚地显示您需要帮助的内容。
  • 为什么要检查值类型并检查转换是否失败?如果 value 是 String 或 Int 不一致,你必须自己检查,没有其他神奇的方法。
  • 您真的要存储一个字符串或Int 值吗?此外,正如其他人已经要求的那样,请提供更多背景信息。
  • 为什么服务器有时返回引号而有时不返回。这是一种非常奇怪的行为
  • @TPN1994,当项目被重写为带有可选选项的swift时出现问题

标签: json swift type-conversion


【解决方案1】:

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

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

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

并责怪网络服务的所有者发送不一致的数据;-)

【讨论】:

  • OptionalOptional类别中使用这个答案+方法似乎没问题
猜你喜欢
  • 2015-04-04
  • 2020-01-13
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2017-11-20
  • 2014-04-29
相关资源
最近更新 更多