如何使用SwiftyJSON在Json中解析Json?

时间:2016-05-24 21:10:05

标签: swift swifty-json

我从API返回以下JSON。在我的数据库中,我已经在JSON中存储了一个列表。因此,它在JSON中为我们提供了一串JSON。如何在Swift中将它们作为对象访问?更重要的是:我如何在JSON中解析JSON?

{
  "checklists": [
    {
      "id": 1,
      "account_id": 15,
      "user_id": 15,
      "object_id": 21,
      "checklist": "[{\"title\":\"Test\",\"summary\":\"Test 12\"},{\"title\":\"Test 2 \",\"summary\":\"Test 123\"}]",
      "title": "High Altitude Operations",
      "type": "other",
      "LastHistory": null,
      "CleanArray": [
        {
          "title": "Test",
          "summary": "Test 12"
        },
        {
          "title": "Test 2 ",
          "summary": "Test 123"
        }
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:4)

首先,解码主要对象。

让我们说data是你问题中的JSON:

let json = JSON(data: data)

要在checklist键内的数组中获取checklists键的内容,我们可以使用SwiftyJSON的键路径下标,如下所示:

let checkList = json["checklists",0,"checklist"]
print(checkList)

打印:

  

[{" title":" Test"," summary":" Test 12"},{" title&# 34;:"测试2","摘要":"测试123"}]

这是你的内部JSON字符串。

制作数据,然后执行相同的过程并访问数组内容:

if let json2String = checkList.string, 
        data2 = json2String.dataUsingEncoding(NSUTF8StringEncoding) {
    let json2 = JSON(data: data2)
    let checkList2 = json2[0]
    let title = checkList2["title"]
    print(title)
}

打印:

  

测试

请注意,我已经使用了此示例的关键路径下标,但通常的技术,如简单的下标,循环和map / flatMap /等也可以使用:

let mainChecklists = json["checklists"]
for (_, content) in mainChecklists {
    if let innerString = content["checklist"].string,
            data2 = innerString.dataUsingEncoding(NSUTF8StringEncoding) {
        let json2 = JSON(data: data2)
        for (_, innerChecklist) in json2 {
            let title = innerChecklist["title"]
            print(title)
        }
    }
}

打印:

  

测试
  测试2