gpt4 book ai didi

json - 在 Swift 中处理 JSON 文件的嵌套 for 循环

转载 作者:行者123 更新时间:2023-11-30 10:12:08 25 4
gpt4 key购买 nike

我发出的一个 JSON 请求返回一个包含一堆嵌套信息的文件。格式大致如下:团体->个人团体->团体中的团队。

目前,我正在使用嵌套的 for 循环来处理此问题,在该循环中,我查看外部组,然后运行内部循环以获取各个团队的信息。

我已将 JSON 文件的副本上传到粘贴箱,这是链接。 http://pastebin.com/D14wYDEs 。这个特定的示例没有那么多组和团队,但可能有更多组和团队,这使得嵌套 for 循环的概念看起来不切实际。

我想知道是否有人对更好的系统有建议,或者确实有任何建议。

这是我当前的代码:

func generateTablaDePosiciones() {
estadisticaUtilizada = 3
var tablaDePosicionesJSON = getJSONStats(3,tkn,eqID)

//checks to see that contents != nil, meaning the JSON file was found
if tablaDePosicionesJSON != nil {

tablaDePosicionesArray.removeAll(keepCapacity: false)
var numeroDeGruposEnTablaDePosiciones = tablaDePosicionesJSON["grupos"].count

for var index = 0; index < numeroDeGruposEnTablaDePosiciones; ++index {

var grupo = tablaDePosicionesJSON["grupos"][index]["grupo"].string
var etiqueta1 = tablaDePosicionesJSON["grupos"][index]["etiqueta-1"].string
var etiqueta2 = tablaDePosicionesJSON["grupos"][index]["etiqueta-2"].string
var etiqueta3 = tablaDePosicionesJSON["grupos"][index]["etiqueta-3"].string
var etiqueta4 = tablaDePosicionesJSON["grupos"][index]["etiqueta-4"].string
var etiqueta5 = tablaDePosicionesJSON["grupos"][index]["etiqueta-5"].string
var preTablaDePosicionesNuevo = preTablaDePosiciones(grupo: grupo!, etiqueta1: etiqueta1!, etiqueta2: etiqueta2!, etiqueta3: etiqueta3!, etiqueta4: etiqueta4!, etiqueta5: etiqueta5!)
preTablaDePosicionesArray.append(preTablaDePosicionesNuevo)

numeroDeTablaDePosiciones = tablaDePosicionesJSON["grupos"][index]["lista-body"].count

for(var innerIndex = 0; innerIndex < numeroDeTablaDePosiciones; ++innerIndex) {

var rank = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["rank"].string
var equipoID = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["equipoID"].number! as Int
var nomEquipo = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["nom-equipo"].string
var d1 = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["d1"].string
var d2 = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["d2"].string
var d3 = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["d3"].string
var d4 = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["d4"].string
var d5 = tablaDePosicionesJSON["grupos"][index]["lista-body"][innerIndex]["d5"].string

var tablaDePosicionesNuevo = tablaDePosiciones(rank: rank!, equipoID: equipoID, nomEquipo: nomEquipo!, d1: d1!, d2: d2!, d3: d3!, d4: d4!, d5: d5!)
tablaDePosicionesArray.append(tablaDePosicionesNuevo)
}
}
} else {
estadisticaUtilizada = 0
println("Tabla de Posiciones JSON was nil")
}

}

最佳答案

我会使用while循环。每次执行时增加索引,然后使用该索引动态构造键。将结果收集到一个数组中,然后传递该数组而不是每个单独的对象。

此外,您确实应该在解析所有这些值时对其进行解包,而不是强制解包 (!)。在此 while 循环中,您可以使用条件绑定(bind) while let 来处理该问题,如果失败,即它发现该键没有值——它将退出。

类似这样的事情:

var index = 1
var results = [String]()
while let etiqueta = grupo["etiqueta-\(index)"] as? String {
results.append( etiqueta )
index++
}
let preTablaDePosicionesNuevo = preTablaDePosiciones(grupo: name, etiquetas: results)
preTablaDePosicionesArray.append( preTablaDePosicionesNuevo )

关于json - 在 Swift 中处理 JSON 文件的嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383362/

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