IOS - 如何在 Swift 3 中从 JSON 中捕获动态数组维度

Posted

技术标签:

【中文标题】IOS - 如何在 Swift 3 中从 JSON 中捕获动态数组维度【英文标题】:IOS - How to catch dynamic array dimension from JSON in Swift 3 【发布时间】:2016-11-17 05:13:20 【问题描述】:

大家好,我需要帮助。我有带有动态数组维度值的 JSON。这是一个例子:

//array 1 dimension
"array_dimension" : 1, //we can change to 2 dimension or more
"my_array" : [0, 1, 2, 3, 4] //the value adjust with array_dimension

//array 2 dimension
"array_dimension" : 2,
"my_array" : [[0, 1, 2], [3, 4], [5]]

//array 3 dimension
"array_dimension" : 3,
"my_array" : [[[0, 1], [2]], [[3], [4]], [[5]]]

现在我只能在具有静态数组维度的变量中捕获 my_array 值,如下所示:

//example value in array 2 dimension
"array_dimension" : 2,
"my_array" : [[0, 1, 2], [3, 4], [5]]

//Program to catch my_array value in Swift 3
if let my_array = myJSON["my_array"] as? [[Int]] 
        var myArray: [[Int]]?
        myArray = my_array
 else 
        print("\(TAG) error : JSON parsing my_array not found")

如何从变量 (Swift 3) 中的 my_array 值中捕获所有动态数组维度?

更新: 我如何使用这种技术?

【问题讨论】:

是的,array_dimension 的值可能是无限的,而 my_array 的值可能会随着 array_dimension 的值调整 不,我希望数组值保持在多维中。 是的,我想是的。但是感谢您的回复:) 【参考方案1】:

你的数组不是Array<Int>,你的数组是Array<Any>

在应用程序内部,您知道根数组中的数组有多深。基于此,您可以采用“最后一个”元数组,其中包含 Int 值(类型为Array<Any>)。之后,您可以通过索引获取元素并使用:

let value : Int = Null;
if let intElement = array[index] as? Int 
   value = intElement;

else

   print("Error with element type (print element)");

【讨论】:

哇!真棒答案。非常感谢@Andrew。这解决了我的问题。

以上是关于IOS - 如何在 Swift 3 中从 JSON 中捕获动态数组维度的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 3 中从 JSON 解析数组文字

如何在 Swift 中从 NSDictionary 生成 JSON 数据

Swift 3 - 在 Safari 中从 JSON 打开 URL

如何在 xcode (swift) 中从 Json Schema / Json 生成模型对象?

如何在 Swift 2 中从 JSON 填充我的 tableView?

如何在 Swift 中从同一站点重新加载新的 JSON 数据?