从 JSON 字符串中的二维数组中检索值

Posted

技术标签:

【中文标题】从 JSON 字符串中的二维数组中检索值【英文标题】:Retrieving values from 2D array in JSON string 【发布时间】:2016-01-16 17:28:51 【问题描述】:

我们使用这样的 REST 协议获取一些 JSON 数据。

jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)

看起来像这样:

jsonResult: (
    
    board = "[[\"1:\",\"Y\",\"U\",\"P\"]]";
)

从这里我们得到一个像这样的游戏板:

     if let boardContentArray = jsonResult[0]["board"] as NSArray?
        print("boardContentArray: \(boardContentArray)" )
     else 
        print("board element is not an NSArray")
    

boardContentArray 看起来像这样:我现在应该是一个只有一行四列的二维数组,但它应该适用于任何给定的大小。

[["1:","Y","U","P"]]

如何检索 boardFromRemote 的各个值。我想像这样在二维数组中获取 0,0 处的元素:

boardContentArray[0][0]

这应该返回 "1:",但事实并非如此。这个确切的语法是不正确的,不会编译。从 boardContentArray 变量中检索元素的正确方法是什么?

【问题讨论】:

【参考方案1】:

jsonResult[0]["board"] 的内容是一个 JSON 字符串,可以用 NSJSONSerialization 将其解码为数组。您必须首先将字符串转换为 NSData,然后像这样解码它:

do 
    let boardContentArray = "[[\"1:\",\"Y\",\"U\",\"P\"]]" // the String from jsonResult[0]["board"]
    if let boardData = boardContentArray.dataUsingEncoding(NSUTF8StringEncoding),
        let boardArray = try NSJSONSerialization.JSONObjectWithData(boardData, options: []) as? [[String]] 
            print(boardArray[0]) // ["1:", "Y", "U", "P"]
    
 catch let error as NSError 
    print(error)

【讨论】:

以上是关于从 JSON 字符串中的二维数组中检索值的主要内容,如果未能解决你的问题,请参考以下文章

js如何定义二维数组,一维的key为动态值。就是要处理二级菜单显示。

怎样将JAVA中得list集合转换为javascript的二维数组?

二维数组(扩展hash数组)以及json,严格模式,字符串的常用api

二维数组中的查找

JAVA中怎么把String 类型的二维数组转成JSON串

C ++将值传递给函数中的二维字符数组