gpt4 book ai didi

ios - 在 swift 上将 JSON 字符串转换为 JSON 对象

转载 作者:行者123 更新时间:2023-11-28 23:32:02 25 4
gpt4 key购买 nike

我需要将 let JSON 字符串转换为对象。这是一些带有示例的代码,但它不起作用

   let json = "{ \"data\": [ { \"id\": \"201819S1911921391192161352\", \"unidadeCurricularId\": 18734, \"unidadeCurricularNome\": \"Algoritmos e Estruturas de Dados\", \"unidadeCurricularAbreviatura\": \"AED\", \"unidadeCurricularAtivo\": \"1\", \"unidadeCurricularIdMapSiges\": 9119213, \"anoCurricularId\": 3, \"anoCurricularNome\": \"2\", \"anoCurricularAtivo\": 1, \"anoCurricularIdMapSiges\": 2, \"periodoTempoId\": 5, \"periodoTempoNome\": \"1º Semestre\", \"periodoTempoAbreviatura\": \"1\", \"periodoTempoOrdem\": 1, \"periodoTempoAtivo\": 1, \"periodoTempoIdMapSiges\": \"S1\", \"numeroEstudante\": \"2140259\", \"idAnoLetivo\": 31, \"idUnidadeCurricular\": 18734, \"idEstadoInscricao\": 12, \"idAnoCurricular\": 3, \"numero_creditos\": 6 }, { \"id\": \"201819S1911921391192161352\", \"unidadeCurricularId\": 18735, \"unidadeCurricularNome\": \"Programação Avançada\", \"unidadeCurricularAbreviatura\": \"PA\", \"unidadeCurricularAtivo\": \"1\", \"unidadeCurricularIdMapSiges\": 9119213, \"anoCurricularId\": 3, \"anoCurricularNome\": \"2\", \"anoCurricularAtivo\": 1, \"anoCurricularIdMapSiges\": 2, \"periodoTempoId\": 5, \"periodoTempoNome\": \"1º Semestre\", \"periodoTempoAbreviatura\": \"1\", \"periodoTempoOrdem\": 1, \"periodoTempoAtivo\": 1, \"periodoTempoIdMapSiges\": \"S1\", \"numeroEstudante\": \"2140259\", \"idAnoLetivo\": 31, \"idUnidadeCurricular\": 18734, \"idEstadoInscricao\": 12, \"idAnoCurricular\": 3, \"numero_creditos\": 7 }, { \"id\": \"201819S1911921391192161352\", \"unidadeCurricularId\": 18735, \"unidadeCurricularNome\": \"Álgebra Linear\", \"unidadeCurricularAbreviatura\": \"AlgL\", \"unidadeCurricularAtivo\": \"1\", \"unidadeCurricularIdMapSiges\": 9119213, \"anoCurricularId\": 3, \"anoCurricularNome\": \"1\", \"anoCurricularAtivo\": 1, \"anoCurricularIdMapSiges\": 1, \"periodoTempoId\": 5, \"periodoTempoNome\": \"1º Semestre\", \"periodoTempoAbreviatura\": \"1\", \"periodoTempoOrdem\": 1, \"periodoTempoAtivo\": 1, \"periodoTempoIdMapSiges\": \"S1\", \"numeroEstudante\": \"2140259\", \"idAnoLetivo\": 31, \"idUnidadeCurricular\": 18734, \"idEstadoInscricao\": 12, \"idAnoCurricular\": 3, \"numero_creditos\": 7 } ] }";


let data = json.data(using: .utf8)!
do {
if let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? [Dictionary<String,Any>]
{
let ucIdMapSiges = jsonArray["unidadeCurricularIdMapSiges"] as! Int
let ucNome = jsonArray["unidadeCurricularNome"] as! String
} else {
print("bad json")
}
} catch let error as NSError {
print(error)
}

最佳答案

你的json根是一个字典,其中data键是一个数组,所以尝试

do { 
if let jsonArray = try JSONSerialization.jsonObject(with:Data(json.utf8), options :[]) as? Dictionary<String,Any> , let data = jsonArray["data"] as? [[String:Any]] {
data.forEach {
let ucIdMapSiges = $0["unidadeCurricularIdMapSiges"] as? Int
let ucNome = $0["unidadeCurricularNome"] as? String

print(ucIdMapSiges,ucNome)

}
}
}
catch {
print(error)
}

这样也比较好

do {

let res = try JSONDecoder().decode(Root.self, from:Data(json.utf8))
print(res.data)
}
catch {
print(error)
}



struct Root : Codable {
let data:[Model]
}

struct Model : Codable {
let unidadeCurricularIdMapSiges:Int
let unidadeCurricularNome:String
}

关于ios - 在 swift 上将 JSON 字符串转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56129507/

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