如何在Swift中解析JSON?

时间:2016-03-10 12:47:05

标签: json swift

我有一些看起来像this的JSON数据,我试图在Swift中解析它。

[
  [
    {
        a: "1",
        b: "2"
    },
    [
        {
            c: "3",
        },
        {
            d: "4",
        }
    ]
 ]

        let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)

        if let myArray = json[0] as? [[AnyObject]] {
            for myObject in myArray {
                print("This works!\(myObject)")
            }
        }

然而,我尝试的任何东西似乎都没有用 - 任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

您可以使用SwiftyJSON - https://github.com/SwiftyJSON/SwiftyJSON

或者根据你的JSON方案创建一个类,试着用它解析。

像:

class object
{
  let data = Array<subObject>()
}
class subObject
{
  let subData = Array<Dictionary<AnyObject,AnyObject>>()
}

答案 1 :(得分:0)

此代码段不是JSON。如果它是JSON,则键将是字符串,如下所示:

[
  [
    {
        "a": "1",
        "b": "2"
    },
    [
        {
            "c": "3",
        },
        {
            "d": "4",
        }
    ]
 ]
]

无论如何在屏幕截图中我们看到您的JSON已被解析

您在图像中显示的内容也不是JSON,而是包含数组和词典的数组......

但是,假设您的JSON实际上是有效的,缺少的引号只是一个复制/粘贴问题。

然后,为了实现您的目标,您必须将NSJSONSerialization的结果转换为正确的JSON格式,然后您可以访问内部对象。

像这样,例如:

do {
    if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[AnyObject]] {
        if let myArray = json.first {
            for myObject in myArray {
                print("This works!\(myObject)")
            }
        }
    }
} catch let error as NSError {
    print(error.localizedDescription)
}