gpt4 book ai didi

swift3 - 在 Swift 3 中将 JSON 字符串转换为字典

转载 作者:行者123 更新时间:2023-12-04 23:38:57 25 4
gpt4 key购买 nike

作为编码练习,我编写了一个小程序,将来自 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(text:)
[code]
let dict = convertToDictionary(text: jsonString as! String)
[/code]

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

但是如果我对 json 字符串进行硬编码,然后将其传递给 convertToDictionary(text:)
[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 ,当然不行,因为字典和 String是不兼容的类型。

如何解决这个问题呢?

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

这是你需要做的:
let jsonString = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String: Any]
^^^^^^^^^^^^^^^^^
Add this part

之后,您可以在 jsonString 上调用字典方法。 .我也建议你重命名 jsonString到别的东西。

关于swift3 - 在 Swift 3 中将 JSON 字符串转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com