swift3 – 在Swift 3中将JSON字符串转换为Dictionary
发布时间:2020-12-14 04:38:26 所属栏目:百科 来源:网络整理
导读:作为一个编码练习,我写了一个小程序,将Web上的 MySql数据带到iPhone上.在服务器端.我编写了php脚本来获取脚本以返回json数据. 在xcode上我有 [code]... let jsonString = try? JSONSerialization.jsonObject(with: data!,options: []) print(jsonString!) .
作为一个编码练习,我写了一个小程序,将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重命名为其他东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |