gpt4 book ai didi

swift - 将字符串转换为数据以用于 NSJSONSerialization

转载 作者:搜寻专家 更新时间:2023-11-01 07:27:46 26 4
gpt4 key购买 nike

我有一个看起来像这样的字符串:(它派生自一个格式略有错误的解码数据对象,我通过控制台修复并验证了这个输出)

{"home":{"breakfast":{"protein":"55","carbs":"55","fiber":"55"},"snack":{"water":"55","fiber":"55"},"nextSnack":{"water":"55","fiber":"55"}}}

然后我想将该字符串转换为用于 NSJSONSerialization 的数据,我这样做是这样的:

let cleanStringData = cleanString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

这样做后我得到的对象:

if let jsonObject = try? NSJSONSerialization.JSONObjectWithData(cleanStringData!, options: NSJSONReadingOptions.MutableContainers) as? [String:AnyObject] {


print(jsonObject)

}

并不总是用引号封装键和值。我将如何解决这个问题?非常感谢您的帮助,谢谢。

最佳答案

没有什么可以解决的:这是由于“打印”在键入 AnyObject 时如何解释对象内容。尝试访问您的字典值,您会发现键是实际的字符串,即使它们没有使用双引号显示也是如此。

let cleanString = "{\"home\":{\"breakfast\":{\"protein\":\"55\",\"carbs\":\"55\",\"fiber\":\"55\"},\"snack\":{\"water\":\"55\",\"fiber\":\"55\"},\"nextSnack\":{\"water\":\"55\",\"fiber\":\"55\"}}}"

let cleanStringData = cleanString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

do {
if let jsonObject = try NSJSONSerialization.JSONObjectWithData(cleanStringData!, options: []) as? [String:AnyObject] {
if let home = jsonObject["home"] as? [String:AnyObject],
let snack = home["snack"] as? [String:AnyObject] {
print(snack) // ["water": 55, "fiber": 55]
}
}
} catch let error as NSError {
print(error)
}

关于swift - 将字符串转换为数据以用于 NSJSONSerialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839233/

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