#json #flutter #api #dart #google-api
Вопрос:
Извините, если об этом спрашивали раньше (я искал именно это, но все еще не могу понять). Я пытаюсь получить доступ к вложенному элементу из API Google knowledge graph. Вот как выглядит JSON
{ "@context": { "goog": "http://schema.googleapis.com/", "kg": "http://g.co/kg", "EntitySearchResult": "goog:EntitySearchResult", "resultScore": "goog:resultScore", "@vocab": "http://schema.org/", "detailedDescription": "goog:detailedDescription" }, "@type": "ItemList", "itemListElement": [ { "result": { "name": "Samoyed", "description": "Dog breed", "@type": [ "Thing" ], "@id": "kg:/m/017lg8", "detailedDescription": { "url": "https://en.wikipedia.org/wiki/Samoyed_dog", "articleBody": "The Samoyed is a breed of medium-sized herding dogs with thick, white, double-layer coats. They are a spitz-type dog which takes its name from the Samoyedic peoples of Siberia.", "license": "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License" } }, "@type": "EntitySearchResult", "resultScore": 7775.93505859375 } ] }
Мне нужно получить доступ к элементу articleBody. Вот что у меня есть до сих пор в dart:
Futurelt;Doggt; getWikiInfo() async { var query = "Samoyed"; var API_KEY = "*************"; final apiURL = "https://kgsearch.googleapis.com/v1/entities:search?query=$queryamp;key=$API_KEYamp;limit=1amp;indent=True"; final response = await http.get(Uri.parse(apiURL)); if (response.statusCode == 200) { for (var element in json.decode(response.body)['itemListElement']) { for (var subelement in json.decode(response.body)['detailedDescription']) { print(subelement['articleBody']); } } }
Я пробовал разные итерации этого, чтобы попытаться вернуть этот элемент. Вот как выглядит мой класс собак.
class Dog { final String link; final String breed; final String info; Dog({this.link, this.breed, this.info}); factory Dog.fromJson(Maplt;String, dynamicgt; json) { return Dog( breed: json['message'], link: json['message'], info: json['articleBody']); } }
Комментарии:
1. попробуйте json.decode(response.body)[«Элемент списка элементов»][0][«результат»][«Подробное описание»]
2. Большое вам спасибо!
3. рад помочь вам, пожалуйста, отметьте «голос» и в качестве ответа, если сработает. Спасибо
Ответ №1:
попробуйте этот код последовательности в соответствии с вашей логикой
json.decode(response.body)["itemListElement"][0]["result"]["detailedDescription"]