gpt4 book ai didi

json - 如何将对象的json转换为字典

转载 作者:行者123 更新时间:2023-11-28 15:50:21 24 4
gpt4 key购买 nike

我有一个这样的 json :

[
{
"id" : 887,
"title" : "ماه نو",
"voice_actor" : "ع. پاشایی",
"compiler" : "رابیندرانات تاگور",
"cover_image" : "d5c446a1d81340d2bb912d51b00a3d79"
},
{
"id" : 607,
"title" : "حکایت آن که دلسرد نشد (درس هایی برای رسیدن به موفقیت و ثروت)",
"voice_actor" : "حمید محمدی",
"compiler" : "مارک فیشر",
"cover_image" : "26ead648b33e4977805c7e979f8cc78c"
}
]

现在我想把它转换成这样的字典:

key:value

在这种情况下,key 是任意的(一个唯一的 Int),value 是对象。

我想使用这个函数,但它返回 nil :

 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)
}
}

let value = self.convertToDictionary(text: abovejson)
//value is null

已更新

我想使用@Nirav D 答案,但我得到了一个错误:

   func convertToDictionary(text: String) -> [String: Any]? {
if let data = text.data(using: .utf8) {
do {
let array = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] as? []
var dictionary = [Int:Any]()
//Loop through array and set object in dictionary
for (index,item) in array.enumerated() {
let uniqueID = index //Or generate uniqued Int id
dictionary[uniqueID] = item
}
}
catch {}
}
return nil
}


Expected element type for as? []

enter image description here

最佳答案

您有 JSON 响应,顶级为 Array 而不是 dictionary。因此,您需要将其转换为 [[String:Any]] 而不是 [String: Any]

现在,如果您想将此 Array 响应转换为类型为 [Int:Any]Dictionary,那么您需要遍历数组并从中制作字典。

do {
let array = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] ?? []
var dictionary = [Int:Any]()
//Loop through array and set object in dictionary
for (index,item) in array.enumerated() {
let uniqueID = index //Or generate uniqued Int id
dictionary[uniqueID] = item
}
}
catch {}

关于json - 如何将对象的json转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42362733/

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