gpt4 book ai didi

ios - 更改可以嵌套在 Swift 中的键的 JSON 值

转载 作者:行者123 更新时间:2023-11-28 13:48:57 26 4
gpt4 key购买 nike

我不知道是否有更快的方法或已经针对我的问题实现的功能。我有一个带有唯一键的嵌套动态 JSON。

{
"Key1": true,
"Key2": false,
"Key3": "just a string",
"Key4": {
"Key5": "just a string",
"Key6": 51,
"Key7": {
"Key8": "this value has to be changed"
}
}
}

是否有任何 Swift 函数或包可以像这样轻松地做到这一点:

let updatedJSON = originalJSON.update(key: "Key8", with: "---")

所以更新后的 JSON 将是相同的,只有“Key8”会被更新。考虑到我不知道层次结构。 JSON 关键位置可能会很谨慎。有时 Key8 可以位于对象的根。

最佳答案

不知道你的 JSON 结构会使这个问题有点复杂,但它仍然可以解决。我想出了一个递归搜索字典的想法

extension Dictionary
{
mutating func updateValueRecursively(forKey key : Key, newValue: Value) -> Bool
{
if keys.contains(key)
{
self[key] = newValue
return true
}
for (_, value) in enumerated()
{
if var dict = value.value as? Dictionary<Key, Value> {
if dict.updateValueRecursively(forKey: value.key, newValue: newValue), let newDict = dict as? Value {
self[value.key] = newDict
return true
}
}
}
return false
}
}

当然,您首先必须将 JSON 字符串转换为字典

var dict : Dictionary<String : Any>
if let data = jsonString.data(using: .utf8) {
do {
dict= try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
} catch {
print(error.localizedDescription)
}

关于ios - 更改可以嵌套在 Swift 中的键的 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55019777/

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