首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Any转换为Any失败

从Any转换为Any失败
EN

Stack Overflow用户
提问于 2018-05-08 05:48:55
回答 2查看 61关注 0票数 0

API返回了一个类型为Any的变量。当我打印它时,它看起来像这样。

代码语言:javascript
复制
{
  "sender" : "Kira",
  "created" : "08.05.2018",
  "text" : "Cncncm"
}

我尝试使用SwiftyJSON将它转换为这个let mydata = JSON(data),但是失败了。我尝试使用Swift 4解码技术,但也失败了。我试着这样做,let myData = data as? Dictionary<String, String>,但它再次失败。

我不知道在这里该怎么办。有什么建议或解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2018-05-10 06:11:47

最后,我们有机会来演示一下Codable协议中的一个隐藏的宝石。请在游乐场中运行以下命令:

代码语言:javascript
复制
import Cocoa

let jsonData = """
    {
      "sender" : "Kira",
      "created" : "08.05.2018",
      "text" : "Cncncm"
    }
    """.data(using: .utf8)!

struct SenderText: Codable {
    let sender: String
    let created: Date
    let text: String
}

let dayFormatter = DateFormatter()
dayFormatter.dateFormat = "dd.MM.yyyy"
let date = dayFormatter.date(from:"08.05.2018")
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(dayFormatter)

do {
    let sendText = try decoder.decode(SenderText.self, from: jsonData)
    print(sendText)
} catch {
    print(error)
}

定义这样一个复杂的解析器将一个凌乱的JSON-string映射到您最喜欢的struct是多么容易,这种纯粹的优雅几乎不会让我感到惊讶。不管你的日期格式看起来有多奇怪,在这个过程中它离解析只有3行之遥。

在Swift中,就像在大多数面向对象的语言中一样,只有当(且仅当)某个对象已经是其他对象时(但该知识已经在某个地方丢失),才能将该对象强制转换为其他对象。由于您的String“仅仅”是一个String (也许是在Any的掩饰下),您将无法将其转换为其他任何类型。但是,Codable协议为您提供了一种极好的方法,可以非常轻松地从Strings Data执行decode操作。这个过程不应该被误认为是造型,即使它看起来大体相同。它是从一段简单的Data中创建和初始化另一个更合适的结构化对象,您很可能已经从您的普通web服务中选择了它。

到目前为止还不错,至少在我的书里是这样。

票数 1
EN

Stack Overflow用户

发布于 2018-05-08 05:57:37

您可以这样解析它,因为它是一个json字符串

代码语言:javascript
复制
let trd = yourVar as? String

if let data = trd?.data(using: String.Encoding.utf8) {

   do {
           var content = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String:String]

           print(content)

      } 
      catch let error as NSError {

           print(error)
     }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50222930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档