简体   繁体   English

在Swift iOS中从JSON响应访问值

[英]Accessing values from JSON Response in swift ios

I have api it returns json response( https://pixabay.com/api/?key=10961259-e4e939648ed5abb6879f1fbbc&q=yellow+flowers&image_type=photo ) 我有api,它返回json响应( https://pixabay.com/api/?key=10961259-e4e939648ed5abb6879f1fbbc&q=yellow+flowers&image_type=photo

I want to access parameters( webformatURL, tags ) from the response. 我想从响应中访问参数( webformatURL,tags )。 I made URL session request and getting data is like below. 我提出了URL会话请求,获取数据如下所示。 How can i query and access those parameters from the response in swift. 如何快速从响应中查询和访问这些参数。 I'm new to programming please suggest me in swift. 我是编程新手,请尽快向我推荐。

//Mark:- Method to fetch data from the url
func getDataFromUrl(){
    let url = URL(string: "https://pixabay.com/api/?key=10961259-e4e939648ed5abb6879f1fbbc&q=yellow+flowers&image_type=photo")
    let request = NSMutableURLRequest(url: url!)
    request.httpMethod = "GET"
    let session = URLSession.shared
    let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
        if error == nil
        {
            do
            {
                let respDict = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) 

                print("Some Data: \(respDict)")

            }
            catch let error2 as NSError
            {
                print(error2)
            }
        }
    })
    dataTask.resume()
}

And the response is: 响应是:

{
"totalHits": 500,
"hits": [
    {
        "largeImageURL": "https://pixabay.com/get/ea35b70c2afc053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 848,
        "imageWidth": 6000,
        "id": 3063284,
        "user_id": 1564471,
        "views": 476351,
        "comments": 191,
        "pageURL": "https://pixabay.com/en/rose-flower-petal-floral-noble-3063284/",
        "imageHeight": 4000,
        "webformatURL": "https://pixabay.com/get/ea35b70c2afc053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "rose, flower, petal",
        "downloads": 288342,
        "user": "annca",
        "favorites": 720,
        "imageSize": 3574625,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2015/11/27/06-58-54-609_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2018/01/05/16/24/rose-3063284_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ea34b00c2bf5093ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 706,
        "imageWidth": 2736,
        "id": 3113318,
        "user_id": 7410713,
        "views": 342627,
        "comments": 113,
        "pageURL": "https://pixabay.com/en/sunflower-nature-flora-flower-3113318/",
        "imageHeight": 1824,
        "webformatURL": "https://pixabay.com/get/ea34b00c2bf5093ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "sunflower, nature, flora",
        "downloads": 242156,
        "user": "bichnguyenvo",
        "favorites": 454,
        "imageSize": 1026006,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2017/12/16/10-28-39-199_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2018/01/28/11/24/sunflower-3113318_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ea37b80d21f7033ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 400,
        "webformatWidth": 640,
        "likes": 434,
        "imageWidth": 3200,
        "id": 3292932,
        "user_id": 2216431,
        "views": 184738,
        "comments": 34,
        "pageURL": "https://pixabay.com/en/sunflower-vase-vintage-retro-wall-3292932/",
        "imageHeight": 2000,
        "webformatURL": "https://pixabay.com/get/ea37b80d21f7033ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 93,
        "tags": "sunflower, vase, vintage",
        "downloads": 146666,
        "user": "Yuri_B",
        "favorites": 593,
        "imageSize": 2563708,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/01/15/10-52-15-382_250x250.png",
        "previewURL": "https://cdn.pixabay.com/photo/2018/04/05/14/09/sun-flower-3292932_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/eb37b80a2cf7053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 486,
        "imageWidth": 5363,
        "id": 2295434,
        "user_id": 334088,
        "views": 54291,
        "comments": 33,
        "pageURL": "https://pixabay.com/en/spring-bird-bird-tit-spring-blue-2295434/",
        "imageHeight": 3575,
        "webformatURL": "https://pixabay.com/get/eb37b80a2cf7053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "spring bird, bird, tit",
        "downloads": 25018,
        "user": "jill111",
        "favorites": 548,
        "imageSize": 2938651,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/06/27/01-23-02-27_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2017/05/08/13/15/spring-bird-2295434_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ee34b40a2cf41c22d2524518b74d469fe576e0d010ac104491f4c47aaeeeb5bf_1280.jpg",
        "webformatHeight": 360,
        "webformatWidth": 640,
        "likes": 258,
        "imageWidth": 3020,
        "id": 715540,
        "user_id": 916237,
        "views": 82194,
        "comments": 31,
        "pageURL": "https://pixabay.com/en/yellow-natural-flower-blossom-715540/",
        "imageHeight": 1703,
        "webformatURL": "https://pixabay.com/get/ee34b40a2cf41c22d2524518b74d469fe576e0d010ac104491f4c47aaeeeb5bf_640.jpg",
        "type": "photo",
        "previewHeight": 84,
        "tags": "yellow, natural, flower",
        "downloads": 39827,
        "user": "Wow_Pho",
        "favorites": 256,
        "imageSize": 974940,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2015/04/07/14-10-15-590_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2015/04/10/00/41/yellow-715540_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ea37b00a29fc093ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 358,
        "webformatWidth": 640,
        "likes": 336,
        "imageWidth": 2027,
        "id": 3215188,
        "user_id": 7097598,
        "views": 135865,
        "comments": 94,
        "pageURL": "https://pixabay.com/en/flowers-orange-orange-petals-3215188/",
        "imageHeight": 1134,
        "webformatURL": "https://pixabay.com/get/ea37b00a29fc093ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 83,
        "tags": "flowers, orange, orange petals",
        "downloads": 93385,
        "user": "Candiix",
        "favorites": 274,
        "imageSize": 399066,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2017/12/06/20-08-45-84_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2018/03/10/20/26/flowers-3215188_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/e830b20928fc093ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 419,
        "webformatWidth": 640,
        "likes": 235,
        "imageWidth": 4896,
        "id": 1536088,
        "user_id": 1195798,
        "views": 268764,
        "comments": 53,
        "pageURL": "https://pixabay.com/en/sunflower-flower-bloom-yellow-1536088/",
        "imageHeight": 3208,
        "webformatURL": "https://pixabay.com/get/e830b20928fc093ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 98,
        "tags": "sunflower, flower, bloom",
        "downloads": 40996,
        "user": "Couleur",
        "favorites": 203,
        "imageSize": 5103399,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/09/29/00-20-33-645_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2016/07/23/00/12/sun-flower-1536088_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/eb34b50a2df7083ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 390,
        "webformatWidth": 640,
        "likes": 306,
        "imageWidth": 4000,
        "id": 2145539,
        "user_id": 2364555,
        "views": 36019,
        "comments": 27,
        "pageURL": "https://pixabay.com/en/crocus-flower-wet-spring-2145539/",
        "imageHeight": 2443,
        "webformatURL": "https://pixabay.com/get/eb34b50a2df7083ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 91,
        "tags": "crocus, flower, wet",
        "downloads": 20750,
        "user": "pixel2013",
        "favorites": 286,
        "imageSize": 823922,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/02/25/16-46-24-974_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2017/03/15/09/00/crocus-2145539_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ec33b50e2ce90021d85a5854e74c4f90e275e7dc04b0144591f5c270a4edb2_1280.jpg",
        "webformatHeight": 428,
        "webformatWidth": 640,
        "likes": 436,
        "imageWidth": 3872,
        "id": 56414,
        "user_id": 9003,
        "views": 57529,
        "comments": 75,
        "pageURL": "https://pixabay.com/en/anemone-flower-blossom-bloom-blue-56414/",
        "imageHeight": 2592,
        "webformatURL": "https://pixabay.com/get/ec33b50e2ce90021d85a5854e74c4f90e275e7dc04b0144591f5c270a4edb2_640.jpg",
        "type": "photo",
        "previewHeight": 100,
        "tags": "anemone, flower, blossom",
        "downloads": 20907,
        "user": "Albenheim",
        "favorites": 364,
        "imageSize": 770723,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2012/09/08/21-14-56-990_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2012/09/08/21/51/anemone-56414_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/e830b00d20f5023ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 323,
        "webformatWidth": 640,
        "likes": 211,
        "imageWidth": 3861,
        "id": 1512813,
        "user_id": 2364555,
        "views": 63538,
        "comments": 22,
        "pageURL": "https://pixabay.com/en/lily-flowers-early-flower-garden-1512813/",
        "imageHeight": 1952,
        "webformatURL": "https://pixabay.com/get/e830b00d20f5023ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 75,
        "tags": "lily, flowers, early",
        "downloads": 31782,
        "user": "pixel2013",
        "favorites": 209,
        "imageSize": 1037708,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/02/25/16-46-24-974_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2016/07/12/18/54/lily-1512813_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ee37b80a29f11c22d2524518b74d469fe576e0d010ac104491f4c47aaeeeb5bf_1280.jpg",
        "webformatHeight": 416,
        "webformatWidth": 640,
        "likes": 269,
        "imageWidth": 1980,
        "id": 729515,
        "user_id": 909086,
        "views": 33664,
        "comments": 17,
        "pageURL": "https://pixabay.com/en/flower-beautiful-bloom-blooming-729515/",
        "imageHeight": 1288,
        "webformatURL": "https://pixabay.com/get/ee37b80a29f11c22d2524518b74d469fe576e0d010ac104491f4c47aaeeeb5bf_640.jpg",
        "type": "photo",
        "previewHeight": 97,
        "tags": "flower, beautiful, bloom",
        "downloads": 21810,
        "user": "Bess-Hamiti",
        "favorites": 348,
        "imageSize": 370390,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2017/09/19/10-02-47-777_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2015/04/19/08/33/flower-729515_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/e83cb60d2cf5003ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 372,
        "webformatWidth": 640,
        "likes": 247,
        "imageWidth": 4288,
        "id": 1972411,
        "user_id": 1777190,
        "views": 84036,
        "comments": 29,
        "pageURL": "https://pixabay.com/en/drip-blossom-bloom-yellow-1972411/",
        "imageHeight": 2499,
        "webformatURL": "https://pixabay.com/get/e83cb60d2cf5003ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 87,
        "tags": "drip, blossom, bloom",
        "downloads": 71846,
        "user": "susannp4",
        "favorites": 244,
        "imageSize": 1510459,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2015/12/16/17-56-55-832_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2017/01/11/17/27/drip-1972411_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/e834b30829f3053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 338,
        "imageWidth": 4752,
        "id": 1127174,
        "user_id": 1445608,
        "views": 93274,
        "comments": 24,
        "pageURL": "https://pixabay.com/en/sunflower-summer-yellow-nature-1127174/",
        "imageHeight": 3168,
        "webformatURL": "https://pixabay.com/get/e834b30829f3053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "sunflower, summer, yellow",
        "downloads": 55774,
        "user": "mploscar",
        "favorites": 341,
        "imageSize": 3922163,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2016/01/05/14-08-20-943_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2016/01/08/05/24/sunflower-1127174_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/e834b2082bf11c22d2524518b74d469fe576e0d010ac104491f4c47aaeeeb5bf_1280.jpg",
        "webformatHeight": 355,
        "webformatWidth": 640,
        "likes": 167,
        "imageWidth": 2410,
        "id": 113735,
        "user_id": 817,
        "views": 91032,
        "comments": 29,
        "pageURL": "https://pixabay.com/en/rose-flower-yellow-yellow-rose-113735/",
        "imageHeight": 1337,
        "webformatURL": "https://pixabay.com/get/e834b2082bf11c22d2524518b74d469fe576e0d010ac104491f4c47aaeeeb5bf_640.jpg",
        "type": "photo",
        "previewHeight": 83,
        "tags": "rose, flower, yellow",
        "downloads": 13679,
        "user": "blizniak",
        "favorites": 152,
        "imageSize": 299425,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2013/06/28/17-07-05-714_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2013/05/26/12/14/rose-113735_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/e836b00629f5053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 249,
        "imageWidth": 4272,
        "id": 1319114,
        "user_id": 485024,
        "views": 87475,
        "comments": 24,
        "pageURL": "https://pixabay.com/en/girl-flowers-yellow-beauty-nature-1319114/",
        "imageHeight": 2848,
        "webformatURL": "https://pixabay.com/get/e836b00629f5053ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "girl, flowers, yellow",
        "downloads": 41303,
        "user": "AdinaVoicu",
        "favorites": 263,
        "imageSize": 3837334,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/12/07/21-49-54-663_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2016/04/09/23/10/girl-1319114_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ea32b30f2bfc023ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 108,
        "imageWidth": 6000,
        "id": 3720383,
        "user_id": 6246704,
        "views": 16075,
        "comments": 32,
        "pageURL": "https://pixabay.com/en/flower-g%C3%A9rbel-yellow-flower-flower-3720383/",
        "imageHeight": 4000,
        "webformatURL": "https://pixabay.com/get/ea32b30f2bfc023ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "flower gérbel, yellow flower, flower",
        "downloads": 9864,
        "user": "fernandozhiminaicela",
        "favorites": 81,
        "imageSize": 2117262,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/06/04/17-13-01-772_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2018/10/03/03/42/flower-gerbel-3720383_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ea35b40f28f3073ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 285,
        "imageWidth": 5472,
        "id": 3050076,
        "user_id": 6663646,
        "views": 131773,
        "comments": 28,
        "pageURL": "https://pixabay.com/en/portrait-girl-fog-flowers-beauty-3050076/",
        "imageHeight": 3648,
        "webformatURL": "https://pixabay.com/get/ea35b40f28f3073ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "portrait, girl, fog",
        "downloads": 92671,
        "user": "ThuyHaBich",
        "favorites": 283,
        "imageSize": 2914111,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2017/11/17/08-35-57-188_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2017/12/30/13/25/portrait-3050076_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ec37b20a20e90021d85a5854e74c4f90e275e7dc04b0144591f5c270a4edb2_1280.jpg",
        "webformatHeight": 360,
        "webformatWidth": 640,
        "likes": 179,
        "imageWidth": 1920,
        "id": 52358,
        "user_id": 5783,
        "views": 28923,
        "comments": 20,
        "pageURL": "https://pixabay.com/en/flower-wild-flower-nature-52358/",
        "imageHeight": 1080,
        "webformatURL": "https://pixabay.com/get/ec37b20a20e90021d85a5854e74c4f90e275e7dc04b0144591f5c270a4edb2_640.jpg",
        "type": "photo",
        "previewHeight": 84,
        "tags": "flower, wild flower, nature",
        "downloads": 10460,
        "user": "PeterDargatz",
        "favorites": 154,
        "imageSize": 172383,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2012/06/22/22-42-41-494_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2012/07/12/14/50/flower-52358_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/eb31b10b2ff2083ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 427,
        "webformatWidth": 640,
        "likes": 204,
        "imageWidth": 6016,
        "id": 2404769,
        "user_id": 4331363,
        "views": 29872,
        "comments": 21,
        "pageURL": "https://pixabay.com/en/summer-field-nature-cereals-2404769/",
        "imageHeight": 4016,
        "webformatURL": "https://pixabay.com/get/eb31b10b2ff2083ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 100,
        "tags": "summer, field, nature",
        "downloads": 12788,
        "user": "geraldfriedrich2",
        "favorites": 257,
        "imageSize": 4290219,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2017/02/22/12-32-00-453_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2017/06/15/10/25/summer-2404769_150.jpg"
    },
    {
        "largeImageURL": "https://pixabay.com/get/ea33b50f21f7043ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_1280.jpg",
        "webformatHeight": 426,
        "webformatWidth": 640,
        "likes": 213,
        "imageWidth": 5574,
        "id": 3640935,
        "user_id": 334088,
        "views": 103667,
        "comments": 54,
        "pageURL": "https://pixabay.com/en/sunflowers-field-woman-yellow-3640935/",
        "imageHeight": 3717,
        "webformatURL": "https://pixabay.com/get/ea33b50f21f7043ed1584d05fb1d4796ea71e3d71cb80c4090f4c57ca4e4b6b8df_640.jpg",
        "type": "photo",
        "previewHeight": 99,
        "tags": "sunflowers, field, woman",
        "downloads": 86701,
        "user": "jill111",
        "favorites": 186,
        "imageSize": 4970597,
        "previewWidth": 150,
        "userImageURL": "https://cdn.pixabay.com/user/2018/06/27/01-23-02-27_250x250.jpg",
        "previewURL": "https://cdn.pixabay.com/photo/2018/08/29/22/52/sunflowers-3640935_150.jpg"
    }
],
"total": 17148
}

You are getting one JSON object with keys: 您将获得一个带有键的JSON对象:

  1. totalHits 总命中
  2. hits 命中
  3. total

In the above three keys, value of https is another JSON array having many json objects inside it. 在以上三个键中,https的值是另一个内部有许多json对象的JSON数组。 you can get that object by 你可以通过得到那个对象

      let respDict = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String:Any]
                let httpDictArray = respDict["hits"] as! [Any]
                for dictionary in httpDictArray{
                    if let dict = dictionary as? [String:Any]
                    {
                        let webFormatUrl = dict["webformatURL"] as! String
                        let tags = dict["tags"] as! String
                    }

                }

Here tags is a string which is a concatenation of many words separated by comma. 这里的标签是一个字符串,由许多用逗号分隔的单词组成。 so from tags string you can get the array of tags as 因此,您可以从标签字符串中获取标签数组

let tagArray = tags.components(separatedBy: ", ")

The Decodable protocol is the most convenient way to parse JSON in Swift 4+ Decodable协议是在Swift 4+中解析JSON的最便捷方法

struct Root : Decodable {
    let totalHits : Int
    let hits : [Hit]
}

struct Hit : Decodable {
    let webformatURL : URL
    let tags : String
}


func getDataFromUrl() {
    let url = URL(string: "https://pixabay.com/api/?key=10961259-e4e939648ed5abb6879f1fbbc&q=yellow+flowers&image_type=photo")
    let session = URLSession.shared
    let dataTask = session.dataTask(with: url!) { data, response, error in
        guard let data = data else { print(error!); return }
        do {
            let result = try JSONDecoder().decode(Root.self, from: data)
            let hits = result.hits
            for hit in hits {
                print("webformatURL: ", hit.webformatURL, "tags:", hit.tags)
            }
        } catch {
            print(error)
        }
    }
    dataTask.resume()
}

getDataFromUrl()

Note: 注意:

An URLRequest is not needed in this case and don't use NSMutableURLRequest in Swift anyway. 在这种情况下,不需要URLRequest ,并且无论如何不要在Swift中使用NSMutableURLRequest

Now that you have your response in a dictionary, you can do the following to get the hits : 现在您已经在字典中得到了答复,您可以执行以下操作来获得hits

guard let results = respDict as? [String: Any],
    let hits = results["hits"] as? Array<[String:Any]> else { 
    return 
}

Now, when you have the hits, let's transform this array of objects into two array. 现在,当您获得成功时,让我们将该对象数组转换为两个数组。 array of urls, and array of tags. 网址数组和标记数组。

let urls = hits.flatMap { $0["webformatURL"] as? String }
let tags = hits.flatMap { $0["tags"] as? String }

There you go! 你去!

Here is the simple approach, 这是简单的方法,

struct HitResponse: Codable {
    var total: Int
    var totalHits: Int
    var hits: [HitObject]
}

struct HitObject: Codable {
    var largeImageURL: String
    var webformatHeight: Int
    var webformatWidth: Int
    var likes: Int
    var imageWidth: Int
    var id: Int
    var user_id: Int
    var views: Int
    var comments: Int
    var pageURL: String
    var imageHeight: Int
    var webformatURL: String
    var type: String
    var previewHeight: Int
    var tags: String
    var downloads: Int
    var user: String
    var favorites: Int
    var imageSize: Int
    var previewWidth: Int
    var userImageURL: String
    var previewURL: String
}


enum APIResponse {
    case success(result: Result)
    case error(error: Error)
}

struct Result{
    var object: Any
}


class APIRequester {
    static func request(for url: URL, completionHandler: @escaping (_ response: APIResponse)->Void) {
        let sesseion = URLSession.shared
        let task = sesseion.dataTask(with: url) { (data, urlResponse, error) in
            // data mapping to model
            if let lData = data {
                do {
                    let decode = try JSONDecoder().decode(HitResponse.self, from: lData)
                    let responseMap: APIResponse = .success(result: Result(object: decode))
                    completionHandler(responseMap)
                }catch let mappingError {
                    let responseMap: APIResponse = .error(error: mappingError)
                    completionHandler(responseMap)
                }
            }


            //fall back original error
            let responseMap: APIResponse = .error(error: error!)
            completionHandler(responseMap)
        }
        task.resume()
    }
}



// Usage
let url = URL(string: "https://pixabay.com/api/?key=10961259-e4e939648ed5abb6879f1fbbc&q=yellow+flowers&image_type=photo")
APIRequester.request(for: url!) { (response) in
    switch response {
    case .success(let result):
        if let hitResponse = result.object as? HitResponse {
            for hit in hitResponse.hits {

                //the final output
                print(hit.tags)
                print(hit.webformatURL)
                print("\n")
            }
        }
    case .error(let error):
        // handle error
        print("error \(error)")
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从 Swift Z1BDF605991920C23AC138DA22847F9B7CZ 后端中提取 JSON 响应值 - How to Extract JSON Response Values Coming From PHP Backend in Swift iOS How to create a model class and access the values from JSON response using Codable in ios swift? - How to create a model class and access the values from JSON response using Codable in ios swift? Create a model class and access the values from JSON response using Codable in ios swift? - Create a model class and access the values from JSON response using Codable in ios swift? iOS Swift Alamofire JSON响应返回布尔值为“ 1”或“ 0” - iOS Swift Alamofire JSON Response Returning Bool Values as `1` or `0` 在iOS Swift中从此json提取字符串值 - Extracting string values from this json in IOS swift 如果条件在快速iOS中的JSON响应 - if condition in json response in swift ios 从 WKWebView (Swift, iOS) 中的响应中解析 json 对象 - Parse json object from response inside WKWebView (Swift, iOS) 是否可以从json响应swift iOS动态创建textfield和按钮? - Is it possible to create textfield , buttons dynamically from the json response swift ios? Swift:如何从 json 响应 iOS 创建动态布局 - Swift :How to create dynamic layout from json response iOS iOS Swift 如何从 json 响应中获取任何键的值 - iOS Swift How to get value of any key from json response
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM