尝试使用 SwiftyJSON 使用 swift 3 解析 JSON 数据

女孩游泳

我正在尝试解析通过 API 调用获得的一些 JSON 数据。我首先尝试了艰难的方式:没有图书馆。当那不起作用时,我尝试了 SwiftyJSON,但这也没有太大帮助。我试图从啤酒中获取所有子信息。

在这里您可以看到我打印出整个 JSON“对象”的位置。

迅速

let json = JSON(data: JSONData)
print(json);

输出

{
  "meta" : {
    "init_time" : {
      "measure" : "seconds",
      "time" : 0.011
    },
    "response_time" : {
      "measure" : "seconds",
      "time" : 0.056
    },
    "code" : 200
  },
  "notifications" : [

  ],
  "response" : {
    "macro" : {
      "count" : 10,
      "items" : [
        {
          "beer" : {
            "wish_list" : false,
            "beer_abv" : 5.4,
            "auth_rating" : 0,
            "style_name" : "Witbier",
            "beer_label" : "https:\/\/untappd.akamaized.net\/site\/beer_logos\/beer-3839_207a3_sm.jpeg",
            "bid" : 3839,
            "beer_name" : "Belgian White",
            "beer_style" : "Witbier"
          },
          "total_count" : 668,
          "your_count" : 0,
          "brewery" : {
            "location" : {
              "lng" : -104.992,
              "lat" : 39.7561,
              "brewery_city" : "Denver",
              "brewery_state" : "CO"
            },
            "brewery_name" : "Blue Moon Brewing Company",
            "brewery_slug" : "blue-moon-brewing-company",
            "brewery_id" : 127804,
            "country_name" : "United States",
            "brewery_label" : "https:\/\/untappd.akamaized.net\/site\/brewery_logos\/brewery-127804_1a670.jpeg",
            "contact" : {
              "twitter" : "BlueMoonBrewCo",
              "facebook" : "https:\/\/www.facebook.com\/bluemoon",
              "url" : "http:\/\/www.bluemoonbrewingcompany.com\/",
              "instagram" : ""
            },
            "brewery_active" : 1
          }
        },

在这里,我详细介绍了子级别。

迅速

let json = JSON(data: JSONData)
let list = json["response","micro","items"]
print(list)

输出

[
  {
    "beer" : {
      "wish_list" : false,
      "beer_abv" : 4.7,
      "auth_rating" : 0,
      "style_name" : "IPA - Session \/ India Session Ale",
      "beer_label" : "https:\/\/untappd.akamaized.net\/site\/beer_logos\/beer-36834_82ca8_sm.jpeg",
      "bid" : 36834,
      "beer_name" : "All Day IPA",
      "beer_style" : "IPA - Session \/ India Session Ale"
    },
    "total_count" : 548,
    "your_count" : 0,
    "brewery" : {
      "location" : {
        "lng" : -85.6735,
        "lat" : 42.9585,
        "brewery_city" : "Grand Rapids",
        "brewery_state" : "MI"
      },
      "brewery_name" : "Founders Brewing Co.",
      "brewery_slug" : "founders-brewing-co",
      "brewery_id" : 549,
      "country_name" : "United States",
      "brewery_label" : "https:\/\/untappd.akamaized.net\/site\/brewery_logos\/brewery-foundersbrewingcompany_549.jpeg",
      "contact" : {
        "twitter" : "foundersbrewing",
        "facebook" : "http:\/\/www.facebook.com\/foundersbrewing",
        "url" : "http:\/\/www.foundersbrewing.com\/",
        "instagram" : "foundersbrewing"
      },
      "brewery_active" : 1
    }
  },

当我添加“啤酒”时。我得到了一个“空”的回报。我认为不是因为括号的不同。"[]" = 列表和 "{}" = 字典。但是我还是没能解决。

(我不是 iOS 开发人员,只是第一次与 swift3 交互的学生)

迅速

let json = JSON(data: JSONData)
let list = json["response","micro","items","beer"]
print(list)

输出

null
杰迪普·沃拉

您可以像这样使用 SwiftyJSON 解析响应对象。你的items对象是一系列啤酒。希望你能得到你的想法。

let json = JSON(data: JSONData)
let list = json["response"]["micro"]["items"].arrayValue

for beerObjects in list {

       // You can get sub info of beer like this.
      let beer_name = beerObjects["beer"]["beer_name"].stringValue
      let total_count = beerObjects["total_count"].intValue
      let brewery_city = beerObjects["brewery"]["location"]["brewery_city"]

      // or parse information which you need
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章