swift3 – 在Swift 3中将JSON字符串转换为Dictionary

swift3 – 在Swift 3中将JSON字符串转换为Dictionary,第1张

概述作为一个编码练习,我写了一个小程序,将Web上的 MySql数据带到iPhone上.在服务器端.我编写了php脚本来获取脚本以返回json数据. 在xcode上我有 [code]... let jsonString = try? JSONSerialization.jsonObject(with: data!, options: []) print(jsonStrin 作为一个编码练习,我写了一个小程序,将Web上的 MySql数据带到iPhone上.在服务器端.我编写了PHP脚本来获取脚本以返回Json数据.

在xcode上我有

[code]...     let JsonString = try? JsONSerialization.JsonObject(with: data!,options:    [])    print(JsonString!)    .    .    .[/code]

在xcode控制台中,我有这个:

[code](        {        Address = "1 Infinite Loop Cupertino,CA";        Latitude = "37.331741";        Longitude = "-122";        name = Apple;    })[/code]I have a function    [code]func convertToDictionary(text: String) -> [String: Any]? {            if let data = text.data(using: .utf8) {                do {                    return try JsONSerialization.JsonObject(with: data,options: []) as? [String: Any]                } catch {                    print(error.localizedDescription)                }            }            return nil        }[/code]

当我将JsonString传递给convertToDictionary(文本:)时

[code]let dict = convertToDictionary(text: JsonString as! String)[/code]

在控制台中,我收到错误“无法将类型’__NSSingleObjectArrayI'(0x10369bdb0)的值转换为’Nsstring'(0x1004eac60).”

但如果我硬编码Json字符串然后将其传递给convertToDictionary(文本:)

[code] let hardCodedStr = "{\"Address\":\"1 Infinite Loop Cupertino,CA\",\"Latitude\":\"37.331741\",\"Longitude\":\"-122\",\"name\":\"Apple\"}"let dict = convertToDictionary(text: hardCodedStr)print(dict!)[/code]

它工作得很好.这是为什么?谢谢

解决方法 如果仔细观察JsonObject(with:options :)返回的内容,您将看到它是[String:Any]或[Any],具体取决于您的JsON.

因此,JsonString实际上存储了一个[String:Any],甚至认为编译器认为它是Any类型:

let JsonString = try? JsONSerialization.JsonObject(with: data!,options:    [])print(JsonString!)

如果你试图将它传递给convertToDictionary,它接受一个String,它当然不会工作,因为字典和字符串不是兼容的类型.

如何解决这个问题呢?

问题已经解决了!你根本不需要convertToDictionary. JsonString本身就是你想要的字典.

这是你需要做的:

let JsonString = try? JsONSerialization.JsonObject(with: data!,options: []) as! [String: Any]                                                                             ^^^^^^^^^^^^^^^^^                                                                             Add this part

之后,您可以在JsonString上调用字典方法.我还建议你将JsonString重命名为其他东西.

总结

以上是内存溢出为你收集整理的swift3 – 在Swift 3中将JSON字符串转换为Dictionary全部内容,希望文章能够帮你解决swift3 – 在Swift 3中将JSON字符串转换为Dictionary所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1005726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存