解析 Google 自定义搜索 API Swift
Parse Google Custom Search API Swift
我正在尝试从下面的 Google 自定义搜索 API 调用 "metatags" 数组的字段 "og:image" 和 "og:title" 进行解析。老实说,我不知道如何做到这一点,因为我无法在网上找到任何资源。我需要检索此信息,因为我需要在我的应用程序中显示字段的内容。如果无法仅解析 "metatags" 数组,如何解析整个 API?
谢谢
{
"kind": "customsearch#search",
"url": {
"type": "application/json",
"template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
},
"queries": {
"request": [
{
"title": "Google Custom Search - 4009900360937",
"totalResults": "6",
"searchTerms": "4009900360937",
"count": 6,
"startIndex": 1,
"inputEncoding": "utf8",
"outputEncoding": "utf8",
"safe": "off",
"cx": ""
}
]
},
"context": {
"title": "Google"
},
"searchInformation": {
"searchTime": 0.36736,
"formattedSearchTime": "0.37",
"totalResults": "6",
"formattedTotalResults": "6"
},
"items": [
{
"kind": "customsearch#result",
"title": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees ...",
"htmlTitle": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees ...",
"link": "https://www.codecheck.info/m/essen/suesswaren/kaugummi_kaudragees/ean_4009900360937/id_368832/Wrigleys_Airwaves_Menthol_Eukalyptus_3x_10_Dragees.pro",
"displayLink": "www.codecheck.info",
"snippet": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees. Kaugummi & \nKaudragees. Produktbeschreibung. Menthol kaugummis. Menge / Grösse. 3 \nStangen a ...",
"htmlSnippet": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees. Kaugummi & \u003cbr\u003e\nKaudragees. Produktbeschreibung. Menthol kaugummis. Menge / Grösse. 3 \u003cbr\u003e\nStangen a ...",
"cacheId": "f04ddBPMjcMJ",
"formattedUrl": "https://www.codecheck.info/...4009900360937/.../Wrigleys_Airwaves_ Menthol_Eukalyptus_3x_10_Dragees.pro",
"htmlFormattedUrl": "https://www.codecheck.info/...\u003cb\u003e4009900360937\u003c/b\u003e/.../Wrigleys_Airwaves_ Menthol_Eukalyptus_3x_10_Dragees.pro",
"pagemap": {
"cse_thumbnail": [
{
"src": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQuvPSLNQtg0Ie2_MxSlKIIRNWENp1ezJboQcYIpatdxd5QDks4eJnRIrY",
"width": "225",
"height": "225"
}
],
"metatags": [
{
"apple-itunes-app": "app-id=359351047",
"og:image": "http://www.codecheck.info/img/51821803/1",
"og:type": "Product",
"twitter:card": "summary",
"twitter:title": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"og:site_name": "Codecheck.info",
"twitter:domain": "CodeCheck",
"twitter:url": "http://www.codecheck.info/m/essen/suesswaren/kaugummi_kaudragees/ean_4009900360937/id_368832/Wrigleys_Airwaves_Menthol_Eukalyptus_3x_10_Dragees.pro",
"og:title": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"language": "DE",
"og:description": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"twitter:image": "http://www.codecheck.info/img/51821803/1",
"fb:app_id": "122709251073903",
"apple-mobile-web-app-status-bar-style": "black",
"viewport": "width=device-width, initial-scale=1, minimal-ui, user-scalable=0, maximum-scale=1",
"apple-mobile-web-app-capable": "yes",
"twitter:description": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"og:locale": "de_DE",
"publisher": "Codecheck.info",
"og:url": "http://www.codecheck.info/m/essen/suesswaren/kaugummi_kaudragees/ean_4009900360937/id_368832/Wrigleys_Airwaves_Menthol_Eukalyptus_3x_10_Dragees.pro",
"google-play-app": "app-id=ch.ethz.im.codecheck",
"format-detection": "telephone=no"
}
],
"cse_image": [
{
"src": "http://www.codecheck.info/img/51821803/1"
}
]
}
},
{
"kind": "customsearch#result",
"title": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK",
"htmlTitle": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK",
"link": "https://www.ebay.co.uk/itm/NEW-WRIGLEYS-AIRWAVES-SUGAR-FREE-CHEWING-GUM-3-PACK-30-PIECES-42g-/292246791829",
"displayLink": "www.ebay.co.uk",
"snippet": "... Gummy, Soft Sweet & Marshmallow. Food Aisle: Pantry, Food Specifications: \nSugar Free. Brand: Wrigley, Type: Chewing/ Bubble Gum. EAN: 4009900360937\n ...",
"htmlSnippet": "... Gummy, Soft Sweet & Marshmallow. Food Aisle: Pantry, Food Specifications: \u003cbr\u003e\nSugar Free. Brand: Wrigley, Type: Chewing/ Bubble Gum. EAN: \u003cb\u003e4009900360937\u003c/b\u003e\u003cbr\u003e\n ...",
"cacheId": "fOoNmVeHk30J",
"formattedUrl": "https://www.ebay.co.uk/itm/NEW-WRIGLEYS...3...-/292246791829",
"htmlFormattedUrl": "https://www.ebay.co.uk/itm/NEW-WRIGLEYS...3...-/292246791829",
"pagemap": {
"offer": [
{
"areaserved": "United Kingdom and many other countries | See details",
"availableatorfrom": "Luton, United Kingdom",
"pricecurrency": "GBP",
"price": "3.69",
"availability": "https://schema.org/InStock",
"itemcondition": "New"
}
],
"cse_thumbnail": [
{
"src": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTcul7IOdYe6L0tYz-KZzyMuqXmIGrCxSdEwjXLdDWiT-GVfeXZe2X9moE",
"width": "248",
"height": "204"
}
],
"product": [
{
"image": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l300.jpg",
"name": "Details about NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g"
}
],
"review": [
{
"reviewdate": "2019-10-30",
"reviewer": "peter55_1"
},
{
"author": "peter55_1",
"name": "Nice one",
"reviewbody": "Hi there..Nice one..ok cool..many thanks..Peter",
"datepublished": "30 Oct, 2019"
},
{
"author": "spike.7900",
"name": "Nice one !!!",
"reviewbody": "Yes great !!!",
"datepublished": "24 May, 2018"
}
],
"aggregaterating": [
{
"ratingvalue": "5.0",
"reviewcount": "2"
}
],
"metatags": [
{
"og:image": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg",
"twitter:card": "summary",
"twitter:title": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g",
"og:type": "ebay-objects:item",
"og:site_name": "eBay",
"msvalidate.01": "34E98E6F27109BE1A9DCF19658EEEE33",
"og:title": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g 4009900360937 | eBay",
"y_key": "0090e7e28a2554d4",
"og:description": "Find many great new & used options and get the best deals for NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g at the best online prices at eBay! Free delivery for many products!",
"twitter:image": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg",
"layout": "main",
"referrer": "unsafe-url",
"fb:app_id": "102628213125203",
"twitter:site": "@eBay",
"twitter:description": "Find many great new & used options and get the best deals for NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g at the best online prices at eBay! Free delivery for many products!",
"og:url": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg"
}
],
"cse_image": [
{
"src": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg"
}
],
"hproduct": [
{
"fn": "Details about NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g",
"photo": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l300.jpg",
"currency": "GBP",
"currency_iso4217": "826"
}
],
"listitem": [
{
"item": "Home, Furniture & DIY",
"name": "Home, Furniture & DIY",
"position": "1"
},
{
"item": "Food & Drink",
"name": "Food & Drink",
"position": "2"
},
{
"item": "Food Cupboard",
"name": "Food Cupboard",
"position": "3"
},
{
"item": "Sweets & Chocolate",
"name": "Sweets & Chocolate",
"position": "4"
},
{
"item": "Candies",
"name": "Candies",
"position": "5"
},
{
"item": "Gummy, Soft Sweets & Marshmallows",
"name": "Gummy, Soft Sweets & Marshmallows",
"position": "6"
},
{
"item": "See more Wrigley S Airwaves Menthol Eucalyptus Sugarfre...",
"name": "See more Wrigley S Airwaves Menthol Eucalyptus Sugarfre...",
"position": "1"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Airwaves Menthol & Eucalyptus 3x10er | Online kaufen im World of ...",
"htmlTitle": "Airwaves Menthol & Eucalyptus 3x10er | Online kaufen im World of ...",
"link": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211.html",
"displayLink": "www.worldofsweets.de",
"snippet": "Multipack mit 3x10 zuckerfreien Kaugummi-Dragees mit Menthol- und \nEukalyptusgeschmack. Inhalt: 45g. Herkunftsland: USA. EAN: 4009900360937. \nArt.-Nr.: ...",
"htmlSnippet": "Multipack mit 3x10 zuckerfreien Kaugummi-Dragees mit Menthol- und \u003cbr\u003e\nEukalyptusgeschmack. Inhalt: 45g. Herkunftsland: USA. EAN: \u003cb\u003e4009900360937\u003c/b\u003e. \u003cbr\u003e\nArt.-Nr.: ...",
"cacheId": "5xWyO_gVRoAJ",
"formattedUrl": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211 .html",
"htmlFormattedUrl": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211 .html",
"pagemap": {
"cse_thumbnail": [
{
"src": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSBeGT1ypG_5KuTTlilOOrkqyjzIIVK_1ibx00UcNfp0-QML81xmqk-QfHF",
"width": "225",
"height": "225"
}
],
"metatags": [
{
"msapplication-tilecolor": "#D83434",
"og:image": "https://www.worldofsweets.de/out/pictures/generated/product/1/540_340_75/airwaves-menthol--amp--eucalyptus-3er.jpg",
"og:type": "product",
"og:site_name": "https://www.worldofsweets.de/",
"viewport": "width=device-width, initial-scale=1, maximum-scale=2, minimum-scale=1",
"og:title": "Airwaves Menthol & Eucalyptus 3x10er | Online kaufen im World of Sweets Shop",
"og:url": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211.html",
"msapplication-tileimage": "https://www.worldofsweets.de/out/worldofsweets/img/favicons/favicon_512x512.png",
"og:description": "Airwaves Menthol & Eucalyptus 3x10er - Airwaves Menthol & Eukalyptus verbindet, was zusammen gehört. Die Kaugummi-Dragees kombinieren einen erfrischenden Eukalyptus-Geschmack mit dem intensiven Airwav"
}
],
"cse_image": [
{
"src": "https://www.worldofsweets.de/out/pictures/generated/product/1/540_340_75/airwaves-menthol--amp--eucalyptus-3er.jpg"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Swift JSON parsing array of dictionaries - Stack Overflow",
"htmlTitle": "Swift JSON parsing array of dictionaries - Stack Overflow",
"link": "",
"displayLink": "whosebug.com",
"snippet": "6 days ago ... Reason: products in the above JSON is not of type [[String: String]] . It is of type [[\nString: Any]] instead. That's the reason parsing is giving error.",
"htmlSnippet": "6 days ago \u003cb\u003e...\u003c/b\u003e Reason: products in the above JSON is not of type [[String: String]] . It is of type [[\u003cbr\u003e\nString: Any]] instead. That's the reason parsing is giving error.",
"cacheId": "Ipcat4pAuKIJ",
"formattedUrl": "https://whosebug.com/questions/.../swift-json-parsing-array-of- dictionaries",
"htmlFormattedUrl": "https://whosebug.com/questions/.../swift-json-parsing-array-of- dictionaries",
"pagemap": {
"question": [
{
"image": "https://cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon.png?v=c78bd457575a",
"upvotecount": "-2",
"answercount": "2",
"name": "Swift JSON parsing array of dictionaries",
"text": "I am trying to parse this JSON file which returns an array of dictionaries. I mainly need to retrieve the 'barcode_number' and 'images' values of the dictionaries in order to use them in my...",
"datecreated": "2020-02-21T12:22:11",
"url": "share"
}
],
"answer": [
{
"upvotecount": "1",
"text": "Reason: products in the above JSON is not of type [[String: String]]. It is of type [[String: Any]] instead. That's the reason parsing is giving error. Solution: You need to create a separate...",
"datecreated": "2020-02-21T12:37:17",
"url": "/60338812#60338812"
},
{
"upvotecount": "0",
"text": "try this: yes, it looks like a lot of work, but it wasn't. How did i do this? Easy: 1) enter your url in a webbrowser and copy the result 2) go to https://app.quicktype.io/ and enter the copy...",
"datecreated": "2020-02-21T12:42:47",
"url": "/60338906#60338906"
}
],
"person": [
{
"name": "Luca S"
},
{
"name": "PGDev"
},
{
"name": "Chris"
}
],
"metatags": [
{
"viewport": "width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"htmlTitle": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"link": "https://fr.openfoodfacts.org/produit/4009900360937/airwaves-menthol-eucalyptus-3x10er-multipack",
"displayLink": "fr.openfoodfacts.org",
"snippet": "10 avr. 2018 ... Airwaves Menthol & Eucalyptus 3x10er Multipack. Code barre : 4009900360937 \n(EAN / EAN-13). La page de ce produit n'est pas complète.",
"htmlSnippet": "10 avr. 2018 \u003cb\u003e...\u003c/b\u003e Airwaves Menthol & Eucalyptus 3x10er Multipack. Code barre : \u003cb\u003e4009900360937\u003c/b\u003e \u003cbr\u003e\n(EAN / EAN-13). La page de ce produit n'est pas complète.",
"cacheId": "n1RLGxrSrnQJ",
"formattedUrl": "https://fr.openfoodfacts.org/.../4009900360937/airwaves-menthol-eucalyptus -3x10er-multipack",
"htmlFormattedUrl": "https://fr.openfoodfacts.org/.../\u003cb\u003e4009900360937\u003c/b\u003e/airwaves-menthol-eucalyptus -3x10er-multipack",
"pagemap": {
"cse_thumbnail": [
{
"src": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRIicojCdKeyBJkuzIZgC1qkkWHynDQQs-yjMOnGASpIczNComl2ya4aJQH",
"width": "252",
"height": "200"
}
],
"product": [
{
"gtin13": "4009900360937",
"name": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"brand": "Airwaves"
}
],
"imageobject": [
{
"license": "https://creativecommons.org/licenses/by-sa/3.0/",
"thumbnail": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.200.jpg",
"contenturl": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.full.jpg",
"representativeofpage": "false",
"imgid": "ingredients_fr",
"caption": "Airwaves Menthol & Eucalyptus 3x10er Multipack - Ingrédients"
},
{
"license": "https://creativecommons.org/licenses/by-sa/3.0/",
"thumbnail": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.200.jpg",
"contenturl": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.full.jpg",
"representativeofpage": "false",
"imgid": "ingredients_fr",
"caption": "Airwaves Menthol & Eucalyptus 3x10er Multipack - Ingrédients"
}
],
"metatags": [
{
"msapplication-tilecolor": "#da532c",
"og:image": "https://static.openfoodfacts.org/images/misc/openfoodfacts-logo-fr-356.png",
"msapplication-config": "https://static.openfoodfacts.org/images/favicon/browserconfig.xml",
"apple-itunes-app": "app-id=588797948",
"twitter:card": "product",
"twitter:title": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"og:type": "food",
"twitter:label1": "marque",
"twitter:label2": "catégorie",
"msapplication-tileimage": "https://static.openfoodfacts.org/images/favicon/mstile-144x144.png",
"twitter:creator": "@OpenFoodFactsFr",
"og:description": "Ingrédients, composition nutritionnelle et information sur les produits alimentaires du monde entier dans une base de données libre et ouverte",
"twitter:data1": "Airwaves",
"_globalsign-domain-verification": "2ku73dDL0bAPTj_s1aylm6vxvrBZFK59SfbH_RdUya",
"fb:app_id": "219331381518041",
"twitter:site": "@OpenFoodFactsFr",
"viewport": "width=device-width, initial-scale=1.0",
"twitter:description": "Ingrédients, allergènes, additifs, composition nutritionnelle, labels, origine des ingrédients et informations du produit Airwaves Menthol & Eucalyptus 3x10er Multipack",
"flattr:id": "dw637l",
"og:url": "https://fr.openfoodfacts.org/produit/4009900360937/airwaves-menthol-eucalyptus-3x10er-multipack"
}
],
"cse_image": [
{
"src": "https://static.openfoodfacts.org/images/misc/openfoodfacts-logo-fr-356.png"
}
],
"hproduct": [
{
"fn": "Airwaves Menthol & Eucalyptus 3x10er Multipack"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Airwaves Menthol & Eukalyptus (3 St.) Kaugummi | real",
"htmlTitle": "Airwaves Menthol & Eukalyptus (3 St.) Kaugummi | real",
"link": "https://www.real.de/product/320670591/",
"displayLink": "www.real.de",
"snippet": "4009900360937. Herstellernummer. 133648005. Hersteller. Wrigley, Wrigley \nKaugummis, Wrigley Süßigkeiten & Gebäck. Gewicht. 50 g. Zutatenverzeichnis.",
"htmlSnippet": "\u003cb\u003e4009900360937\u003c/b\u003e. Herstellernummer. 133648005. Hersteller. Wrigley, Wrigley \u003cbr\u003e\nKaugummis, Wrigley Süßigkeiten & Gebäck. Gewicht. 50 g. Zutatenverzeichnis.",
"cacheId": "EAaYPSRT6tAJ",
"formattedUrl": "https://www.real.de/product/320670591/",
"htmlFormattedUrl": "https://www.real.de/product/320670591/",
"pagemap": {
"offer": [
{
"pricecurrency": "EUR",
"price": "2.56",
"availability": "http://schema.org/InStock",
"itemcondition": "http://schema.org/NewCondition"
}
],
"cse_thumbnail": [
{
"src": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcR_yzLY6rSwIKrg5flkC2Zarb1TnLcEejdr-yRO_ShbUK4WQz7Sp78C3-o",
"width": "225",
"height": "224"
}
],
"product": [
{
"image": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg",
"gtin13": "4009900360937",
"name": "Airwaves Menthol & Eukalyptus (3 St.)",
"description": "Produktbeschreibung Das original starke Geschmackserlebnis für den einzigartigen Airwaves Frische-Kick. Zuckerfreier Kaugummi mit Süßungsmitteln und Menthol- und Eukalyptusgeschmack. Zuckerfreih...",
"sku": "320670591",
"brand": "Wrigley"
}
],
"metatags": [
{
"og:image": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg",
"theme-color": "#003A70",
"og:type": "product",
"og:site_name": "real.de",
"og:title": "Airwaves Menthol & Eukalyptus (3 St.)",
"product:price:amount": "2.56",
"product:availability": "in stock",
"og:description": "Das original starke Geschmackserlebnis für den einzigartigen Airwaves Frische-Kick. Zuckerfreier Kaugummi mit Süßungsmitteln und Menthol- und Eukalyptusgeschmack.",
"fb:pages": "101656796570383",
"fb:app_id": "198334153630763",
"viewport": "width=device-width, initial-scale=1",
"product:brand": "Wrigley",
"product:price:currency": "EUR",
"og:url": "https://www.real.de/product/320670591/"
}
],
"cse_image": [
{
"src": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg"
}
],
"hproduct": [
{
"fn": "Airwaves Menthol & Eukalyptus (3 St.)",
"description": "Produktbeschreibung Das original starke Geschmackserlebnis für den einzigartigen Airwaves Frische-Kick. Zuckerfreier Kaugummi mit Süßungsmitteln und Menthol- und Eukalyptusgeschmack. Zuckerfreih...",
"photo": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg",
"currency": "EUR",
"currency_iso4217": "978"
}
],
"listitem": [
{
"item": "https://www.real.de/",
"name": "Startseite",
"position": "1"
},
{
"item": "Lebensmittel",
"name": "Lebensmittel",
"position": "2"
},
{
"item": "Süßigkeiten & Gebäck",
"name": "Süßigkeiten & Gebäck",
"position": "3"
},
{
"item": "Kaugummis",
"name": "Kaugummis",
"position": "4"
},
{
"name": "Airwaves Menthol & Eukalyptus (3 St.)",
"position": "5"
}
]
}
}
]
}
使用Codable
解析JSONdata
.
下面是 模型 只解析 metaTags
为 items
,
struct Root: Codable {
let items: [Item]
}
struct Item: Codable {
let pagemap: Pagemap
}
struct Pagemap: Codable {
let metatags: [Metatag]
}
struct Metatag: Codable {
let ogImage: String?
let ogTitle: String?
enum CodingKeys: String, CodingKey {
case ogImage = "og:image"
case ogTitle = "og:title"
}
}
解析 data
喜欢
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let response = try decoder.decode(Root.self, from: data)
print(response.items.map({ [=11=].pagemap.metatags.map({ [=11=].ogImage }) }))
} catch {
print(error)
}
除了PgDev的回应。
在这一步中,当您访问图像集合时,您将在一个索引上收到所有图像,因为整个对象是一个字典数组。
如果您想一张一张地访问图像并将它们用于不同的目的,您可以通过将图像集合转换为可以通过索引访问的数组来实现。
let imageCollection = responseItems.items.map({[=10=].pagemap.metatags.map({[=10=].ogImage})})
这部分是关键:
let image = Array(imageCollection.joined())
print(image[0])
我正在尝试从下面的 Google 自定义搜索 API 调用 "metatags" 数组的字段 "og:image" 和 "og:title" 进行解析。老实说,我不知道如何做到这一点,因为我无法在网上找到任何资源。我需要检索此信息,因为我需要在我的应用程序中显示字段的内容。如果无法仅解析 "metatags" 数组,如何解析整个 API? 谢谢
{
"kind": "customsearch#search",
"url": {
"type": "application/json",
"template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
},
"queries": {
"request": [
{
"title": "Google Custom Search - 4009900360937",
"totalResults": "6",
"searchTerms": "4009900360937",
"count": 6,
"startIndex": 1,
"inputEncoding": "utf8",
"outputEncoding": "utf8",
"safe": "off",
"cx": ""
}
]
},
"context": {
"title": "Google"
},
"searchInformation": {
"searchTime": 0.36736,
"formattedSearchTime": "0.37",
"totalResults": "6",
"formattedTotalResults": "6"
},
"items": [
{
"kind": "customsearch#result",
"title": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees ...",
"htmlTitle": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees ...",
"link": "https://www.codecheck.info/m/essen/suesswaren/kaugummi_kaudragees/ean_4009900360937/id_368832/Wrigleys_Airwaves_Menthol_Eukalyptus_3x_10_Dragees.pro",
"displayLink": "www.codecheck.info",
"snippet": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees. Kaugummi & \nKaudragees. Produktbeschreibung. Menthol kaugummis. Menge / Grösse. 3 \nStangen a ...",
"htmlSnippet": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees. Kaugummi & \u003cbr\u003e\nKaudragees. Produktbeschreibung. Menthol kaugummis. Menge / Grösse. 3 \u003cbr\u003e\nStangen a ...",
"cacheId": "f04ddBPMjcMJ",
"formattedUrl": "https://www.codecheck.info/...4009900360937/.../Wrigleys_Airwaves_ Menthol_Eukalyptus_3x_10_Dragees.pro",
"htmlFormattedUrl": "https://www.codecheck.info/...\u003cb\u003e4009900360937\u003c/b\u003e/.../Wrigleys_Airwaves_ Menthol_Eukalyptus_3x_10_Dragees.pro",
"pagemap": {
"cse_thumbnail": [
{
"src": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQuvPSLNQtg0Ie2_MxSlKIIRNWENp1ezJboQcYIpatdxd5QDks4eJnRIrY",
"width": "225",
"height": "225"
}
],
"metatags": [
{
"apple-itunes-app": "app-id=359351047",
"og:image": "http://www.codecheck.info/img/51821803/1",
"og:type": "Product",
"twitter:card": "summary",
"twitter:title": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"og:site_name": "Codecheck.info",
"twitter:domain": "CodeCheck",
"twitter:url": "http://www.codecheck.info/m/essen/suesswaren/kaugummi_kaudragees/ean_4009900360937/id_368832/Wrigleys_Airwaves_Menthol_Eukalyptus_3x_10_Dragees.pro",
"og:title": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"language": "DE",
"og:description": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"twitter:image": "http://www.codecheck.info/img/51821803/1",
"fb:app_id": "122709251073903",
"apple-mobile-web-app-status-bar-style": "black",
"viewport": "width=device-width, initial-scale=1, minimal-ui, user-scalable=0, maximum-scale=1",
"apple-mobile-web-app-capable": "yes",
"twitter:description": "Wrigleys Airwaves Menthol & Eukalyptus 3x 10 Dragees",
"og:locale": "de_DE",
"publisher": "Codecheck.info",
"og:url": "http://www.codecheck.info/m/essen/suesswaren/kaugummi_kaudragees/ean_4009900360937/id_368832/Wrigleys_Airwaves_Menthol_Eukalyptus_3x_10_Dragees.pro",
"google-play-app": "app-id=ch.ethz.im.codecheck",
"format-detection": "telephone=no"
}
],
"cse_image": [
{
"src": "http://www.codecheck.info/img/51821803/1"
}
]
}
},
{
"kind": "customsearch#result",
"title": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK",
"htmlTitle": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK",
"link": "https://www.ebay.co.uk/itm/NEW-WRIGLEYS-AIRWAVES-SUGAR-FREE-CHEWING-GUM-3-PACK-30-PIECES-42g-/292246791829",
"displayLink": "www.ebay.co.uk",
"snippet": "... Gummy, Soft Sweet & Marshmallow. Food Aisle: Pantry, Food Specifications: \nSugar Free. Brand: Wrigley, Type: Chewing/ Bubble Gum. EAN: 4009900360937\n ...",
"htmlSnippet": "... Gummy, Soft Sweet & Marshmallow. Food Aisle: Pantry, Food Specifications: \u003cbr\u003e\nSugar Free. Brand: Wrigley, Type: Chewing/ Bubble Gum. EAN: \u003cb\u003e4009900360937\u003c/b\u003e\u003cbr\u003e\n ...",
"cacheId": "fOoNmVeHk30J",
"formattedUrl": "https://www.ebay.co.uk/itm/NEW-WRIGLEYS...3...-/292246791829",
"htmlFormattedUrl": "https://www.ebay.co.uk/itm/NEW-WRIGLEYS...3...-/292246791829",
"pagemap": {
"offer": [
{
"areaserved": "United Kingdom and many other countries | See details",
"availableatorfrom": "Luton, United Kingdom",
"pricecurrency": "GBP",
"price": "3.69",
"availability": "https://schema.org/InStock",
"itemcondition": "New"
}
],
"cse_thumbnail": [
{
"src": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTcul7IOdYe6L0tYz-KZzyMuqXmIGrCxSdEwjXLdDWiT-GVfeXZe2X9moE",
"width": "248",
"height": "204"
}
],
"product": [
{
"image": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l300.jpg",
"name": "Details about NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g"
}
],
"review": [
{
"reviewdate": "2019-10-30",
"reviewer": "peter55_1"
},
{
"author": "peter55_1",
"name": "Nice one",
"reviewbody": "Hi there..Nice one..ok cool..many thanks..Peter",
"datepublished": "30 Oct, 2019"
},
{
"author": "spike.7900",
"name": "Nice one !!!",
"reviewbody": "Yes great !!!",
"datepublished": "24 May, 2018"
}
],
"aggregaterating": [
{
"ratingvalue": "5.0",
"reviewcount": "2"
}
],
"metatags": [
{
"og:image": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg",
"twitter:card": "summary",
"twitter:title": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g",
"og:type": "ebay-objects:item",
"og:site_name": "eBay",
"msvalidate.01": "34E98E6F27109BE1A9DCF19658EEEE33",
"og:title": "NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g 4009900360937 | eBay",
"y_key": "0090e7e28a2554d4",
"og:description": "Find many great new & used options and get the best deals for NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g at the best online prices at eBay! Free delivery for many products!",
"twitter:image": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg",
"layout": "main",
"referrer": "unsafe-url",
"fb:app_id": "102628213125203",
"twitter:site": "@eBay",
"twitter:description": "Find many great new & used options and get the best deals for NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g at the best online prices at eBay! Free delivery for many products!",
"og:url": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg"
}
],
"cse_image": [
{
"src": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l400.jpg"
}
],
"hproduct": [
{
"fn": "Details about NEW WRIGLEY'S AIRWAVES SUGAR FREE CHEWING GUM 3 PACK - 30 PIECES - 42g",
"photo": "https://i.ebayimg.com/images/g/BDkAAOSwA1pawWWP/s-l300.jpg",
"currency": "GBP",
"currency_iso4217": "826"
}
],
"listitem": [
{
"item": "Home, Furniture & DIY",
"name": "Home, Furniture & DIY",
"position": "1"
},
{
"item": "Food & Drink",
"name": "Food & Drink",
"position": "2"
},
{
"item": "Food Cupboard",
"name": "Food Cupboard",
"position": "3"
},
{
"item": "Sweets & Chocolate",
"name": "Sweets & Chocolate",
"position": "4"
},
{
"item": "Candies",
"name": "Candies",
"position": "5"
},
{
"item": "Gummy, Soft Sweets & Marshmallows",
"name": "Gummy, Soft Sweets & Marshmallows",
"position": "6"
},
{
"item": "See more Wrigley S Airwaves Menthol Eucalyptus Sugarfre...",
"name": "See more Wrigley S Airwaves Menthol Eucalyptus Sugarfre...",
"position": "1"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Airwaves Menthol & Eucalyptus 3x10er | Online kaufen im World of ...",
"htmlTitle": "Airwaves Menthol & Eucalyptus 3x10er | Online kaufen im World of ...",
"link": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211.html",
"displayLink": "www.worldofsweets.de",
"snippet": "Multipack mit 3x10 zuckerfreien Kaugummi-Dragees mit Menthol- und \nEukalyptusgeschmack. Inhalt: 45g. Herkunftsland: USA. EAN: 4009900360937. \nArt.-Nr.: ...",
"htmlSnippet": "Multipack mit 3x10 zuckerfreien Kaugummi-Dragees mit Menthol- und \u003cbr\u003e\nEukalyptusgeschmack. Inhalt: 45g. Herkunftsland: USA. EAN: \u003cb\u003e4009900360937\u003c/b\u003e. \u003cbr\u003e\nArt.-Nr.: ...",
"cacheId": "5xWyO_gVRoAJ",
"formattedUrl": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211 .html",
"htmlFormattedUrl": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211 .html",
"pagemap": {
"cse_thumbnail": [
{
"src": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSBeGT1ypG_5KuTTlilOOrkqyjzIIVK_1ibx00UcNfp0-QML81xmqk-QfHF",
"width": "225",
"height": "225"
}
],
"metatags": [
{
"msapplication-tilecolor": "#D83434",
"og:image": "https://www.worldofsweets.de/out/pictures/generated/product/1/540_340_75/airwaves-menthol--amp--eucalyptus-3er.jpg",
"og:type": "product",
"og:site_name": "https://www.worldofsweets.de/",
"viewport": "width=device-width, initial-scale=1, maximum-scale=2, minimum-scale=1",
"og:title": "Airwaves Menthol & Eucalyptus 3x10er | Online kaufen im World of Sweets Shop",
"og:url": "https://www.worldofsweets.de/Airwaves-Menthol-Eucalyptus-3x10er.311211.html",
"msapplication-tileimage": "https://www.worldofsweets.de/out/worldofsweets/img/favicons/favicon_512x512.png",
"og:description": "Airwaves Menthol & Eucalyptus 3x10er - Airwaves Menthol & Eukalyptus verbindet, was zusammen gehört. Die Kaugummi-Dragees kombinieren einen erfrischenden Eukalyptus-Geschmack mit dem intensiven Airwav"
}
],
"cse_image": [
{
"src": "https://www.worldofsweets.de/out/pictures/generated/product/1/540_340_75/airwaves-menthol--amp--eucalyptus-3er.jpg"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Swift JSON parsing array of dictionaries - Stack Overflow",
"htmlTitle": "Swift JSON parsing array of dictionaries - Stack Overflow",
"link": "",
"displayLink": "whosebug.com",
"snippet": "6 days ago ... Reason: products in the above JSON is not of type [[String: String]] . It is of type [[\nString: Any]] instead. That's the reason parsing is giving error.",
"htmlSnippet": "6 days ago \u003cb\u003e...\u003c/b\u003e Reason: products in the above JSON is not of type [[String: String]] . It is of type [[\u003cbr\u003e\nString: Any]] instead. That's the reason parsing is giving error.",
"cacheId": "Ipcat4pAuKIJ",
"formattedUrl": "https://whosebug.com/questions/.../swift-json-parsing-array-of- dictionaries",
"htmlFormattedUrl": "https://whosebug.com/questions/.../swift-json-parsing-array-of- dictionaries",
"pagemap": {
"question": [
{
"image": "https://cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon.png?v=c78bd457575a",
"upvotecount": "-2",
"answercount": "2",
"name": "Swift JSON parsing array of dictionaries",
"text": "I am trying to parse this JSON file which returns an array of dictionaries. I mainly need to retrieve the 'barcode_number' and 'images' values of the dictionaries in order to use them in my...",
"datecreated": "2020-02-21T12:22:11",
"url": "share"
}
],
"answer": [
{
"upvotecount": "1",
"text": "Reason: products in the above JSON is not of type [[String: String]]. It is of type [[String: Any]] instead. That's the reason parsing is giving error. Solution: You need to create a separate...",
"datecreated": "2020-02-21T12:37:17",
"url": "/60338812#60338812"
},
{
"upvotecount": "0",
"text": "try this: yes, it looks like a lot of work, but it wasn't. How did i do this? Easy: 1) enter your url in a webbrowser and copy the result 2) go to https://app.quicktype.io/ and enter the copy...",
"datecreated": "2020-02-21T12:42:47",
"url": "/60338906#60338906"
}
],
"person": [
{
"name": "Luca S"
},
{
"name": "PGDev"
},
{
"name": "Chris"
}
],
"metatags": [
{
"viewport": "width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"htmlTitle": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"link": "https://fr.openfoodfacts.org/produit/4009900360937/airwaves-menthol-eucalyptus-3x10er-multipack",
"displayLink": "fr.openfoodfacts.org",
"snippet": "10 avr. 2018 ... Airwaves Menthol & Eucalyptus 3x10er Multipack. Code barre : 4009900360937 \n(EAN / EAN-13). La page de ce produit n'est pas complète.",
"htmlSnippet": "10 avr. 2018 \u003cb\u003e...\u003c/b\u003e Airwaves Menthol & Eucalyptus 3x10er Multipack. Code barre : \u003cb\u003e4009900360937\u003c/b\u003e \u003cbr\u003e\n(EAN / EAN-13). La page de ce produit n'est pas complète.",
"cacheId": "n1RLGxrSrnQJ",
"formattedUrl": "https://fr.openfoodfacts.org/.../4009900360937/airwaves-menthol-eucalyptus -3x10er-multipack",
"htmlFormattedUrl": "https://fr.openfoodfacts.org/.../\u003cb\u003e4009900360937\u003c/b\u003e/airwaves-menthol-eucalyptus -3x10er-multipack",
"pagemap": {
"cse_thumbnail": [
{
"src": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRIicojCdKeyBJkuzIZgC1qkkWHynDQQs-yjMOnGASpIczNComl2ya4aJQH",
"width": "252",
"height": "200"
}
],
"product": [
{
"gtin13": "4009900360937",
"name": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"brand": "Airwaves"
}
],
"imageobject": [
{
"license": "https://creativecommons.org/licenses/by-sa/3.0/",
"thumbnail": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.200.jpg",
"contenturl": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.full.jpg",
"representativeofpage": "false",
"imgid": "ingredients_fr",
"caption": "Airwaves Menthol & Eucalyptus 3x10er Multipack - Ingrédients"
},
{
"license": "https://creativecommons.org/licenses/by-sa/3.0/",
"thumbnail": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.200.jpg",
"contenturl": "https://static.openfoodfacts.org/images/products/400/990/036/0937/ingredients_fr.4.full.jpg",
"representativeofpage": "false",
"imgid": "ingredients_fr",
"caption": "Airwaves Menthol & Eucalyptus 3x10er Multipack - Ingrédients"
}
],
"metatags": [
{
"msapplication-tilecolor": "#da532c",
"og:image": "https://static.openfoodfacts.org/images/misc/openfoodfacts-logo-fr-356.png",
"msapplication-config": "https://static.openfoodfacts.org/images/favicon/browserconfig.xml",
"apple-itunes-app": "app-id=588797948",
"twitter:card": "product",
"twitter:title": "Airwaves Menthol & Eucalyptus 3x10er Multipack",
"og:type": "food",
"twitter:label1": "marque",
"twitter:label2": "catégorie",
"msapplication-tileimage": "https://static.openfoodfacts.org/images/favicon/mstile-144x144.png",
"twitter:creator": "@OpenFoodFactsFr",
"og:description": "Ingrédients, composition nutritionnelle et information sur les produits alimentaires du monde entier dans une base de données libre et ouverte",
"twitter:data1": "Airwaves",
"_globalsign-domain-verification": "2ku73dDL0bAPTj_s1aylm6vxvrBZFK59SfbH_RdUya",
"fb:app_id": "219331381518041",
"twitter:site": "@OpenFoodFactsFr",
"viewport": "width=device-width, initial-scale=1.0",
"twitter:description": "Ingrédients, allergènes, additifs, composition nutritionnelle, labels, origine des ingrédients et informations du produit Airwaves Menthol & Eucalyptus 3x10er Multipack",
"flattr:id": "dw637l",
"og:url": "https://fr.openfoodfacts.org/produit/4009900360937/airwaves-menthol-eucalyptus-3x10er-multipack"
}
],
"cse_image": [
{
"src": "https://static.openfoodfacts.org/images/misc/openfoodfacts-logo-fr-356.png"
}
],
"hproduct": [
{
"fn": "Airwaves Menthol & Eucalyptus 3x10er Multipack"
}
]
}
},
{
"kind": "customsearch#result",
"title": "Airwaves Menthol & Eukalyptus (3 St.) Kaugummi | real",
"htmlTitle": "Airwaves Menthol & Eukalyptus (3 St.) Kaugummi | real",
"link": "https://www.real.de/product/320670591/",
"displayLink": "www.real.de",
"snippet": "4009900360937. Herstellernummer. 133648005. Hersteller. Wrigley, Wrigley \nKaugummis, Wrigley Süßigkeiten & Gebäck. Gewicht. 50 g. Zutatenverzeichnis.",
"htmlSnippet": "\u003cb\u003e4009900360937\u003c/b\u003e. Herstellernummer. 133648005. Hersteller. Wrigley, Wrigley \u003cbr\u003e\nKaugummis, Wrigley Süßigkeiten & Gebäck. Gewicht. 50 g. Zutatenverzeichnis.",
"cacheId": "EAaYPSRT6tAJ",
"formattedUrl": "https://www.real.de/product/320670591/",
"htmlFormattedUrl": "https://www.real.de/product/320670591/",
"pagemap": {
"offer": [
{
"pricecurrency": "EUR",
"price": "2.56",
"availability": "http://schema.org/InStock",
"itemcondition": "http://schema.org/NewCondition"
}
],
"cse_thumbnail": [
{
"src": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcR_yzLY6rSwIKrg5flkC2Zarb1TnLcEejdr-yRO_ShbUK4WQz7Sp78C3-o",
"width": "225",
"height": "224"
}
],
"product": [
{
"image": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg",
"gtin13": "4009900360937",
"name": "Airwaves Menthol & Eukalyptus (3 St.)",
"description": "Produktbeschreibung Das original starke Geschmackserlebnis für den einzigartigen Airwaves Frische-Kick. Zuckerfreier Kaugummi mit Süßungsmitteln und Menthol- und Eukalyptusgeschmack. Zuckerfreih...",
"sku": "320670591",
"brand": "Wrigley"
}
],
"metatags": [
{
"og:image": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg",
"theme-color": "#003A70",
"og:type": "product",
"og:site_name": "real.de",
"og:title": "Airwaves Menthol & Eukalyptus (3 St.)",
"product:price:amount": "2.56",
"product:availability": "in stock",
"og:description": "Das original starke Geschmackserlebnis für den einzigartigen Airwaves Frische-Kick. Zuckerfreier Kaugummi mit Süßungsmitteln und Menthol- und Eukalyptusgeschmack.",
"fb:pages": "101656796570383",
"fb:app_id": "198334153630763",
"viewport": "width=device-width, initial-scale=1",
"product:brand": "Wrigley",
"product:price:currency": "EUR",
"og:url": "https://www.real.de/product/320670591/"
}
],
"cse_image": [
{
"src": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg"
}
],
"hproduct": [
{
"fn": "Airwaves Menthol & Eukalyptus (3 St.)",
"description": "Produktbeschreibung Das original starke Geschmackserlebnis für den einzigartigen Airwaves Frische-Kick. Zuckerfreier Kaugummi mit Süßungsmitteln und Menthol- und Eukalyptusgeschmack. Zuckerfreih...",
"photo": "https://media.real-onlineshop.de/images/items/1024x1024/dd6e657038ea57ce35ef738ae7c19a1e.jpg",
"currency": "EUR",
"currency_iso4217": "978"
}
],
"listitem": [
{
"item": "https://www.real.de/",
"name": "Startseite",
"position": "1"
},
{
"item": "Lebensmittel",
"name": "Lebensmittel",
"position": "2"
},
{
"item": "Süßigkeiten & Gebäck",
"name": "Süßigkeiten & Gebäck",
"position": "3"
},
{
"item": "Kaugummis",
"name": "Kaugummis",
"position": "4"
},
{
"name": "Airwaves Menthol & Eukalyptus (3 St.)",
"position": "5"
}
]
}
}
]
}
使用Codable
解析JSONdata
.
下面是 模型 只解析 metaTags
为 items
,
struct Root: Codable {
let items: [Item]
}
struct Item: Codable {
let pagemap: Pagemap
}
struct Pagemap: Codable {
let metatags: [Metatag]
}
struct Metatag: Codable {
let ogImage: String?
let ogTitle: String?
enum CodingKeys: String, CodingKey {
case ogImage = "og:image"
case ogTitle = "og:title"
}
}
解析 data
喜欢
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let response = try decoder.decode(Root.self, from: data)
print(response.items.map({ [=11=].pagemap.metatags.map({ [=11=].ogImage }) }))
} catch {
print(error)
}
除了PgDev的回应。
在这一步中,当您访问图像集合时,您将在一个索引上收到所有图像,因为整个对象是一个字典数组。
如果您想一张一张地访问图像并将它们用于不同的目的,您可以通过将图像集合转换为可以通过索引访问的数组来实现。
let imageCollection = responseItems.items.map({[=10=].pagemap.metatags.map({[=10=].ogImage})})
这部分是关键:
let image = Array(imageCollection.joined())
print(image[0])