从 JSON 字符串中的二维数组中检索值
Retrieving values from 2D array in JSON string
我们使用这样的 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]
这应该 return "1:",事实并非如此。这个确切的语法是不正确的,不会编译。从 boardContentArray 变量中检索元素的正确方法是什么?
jsonResult[0]["board"]
的内容是一个JSON字符串,可以通过NSJSON序列化解码为数组。您必须首先将 String 转换为 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)
}
我们使用这样的 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]
这应该 return "1:",事实并非如此。这个确切的语法是不正确的,不会编译。从 boardContentArray 变量中检索元素的正确方法是什么?
jsonResult[0]["board"]
的内容是一个JSON字符串,可以通过NSJSON序列化解码为数组。您必须首先将 String 转换为 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)
}