#json #flutter #dart
#json #flutter #dart
Вопрос:
Я пытаюсь создать приложение flutter, которое показывает категорию и элементы на основе выбранной категории. здесь я могу получить категорию, но попал в выборку элементов, может кто-нибудь, пожалуйста, помочь мне решить эту проблему .. вот мой код
class ListElement {
ListElement({
this.catId,
this.categoryName,
this.item,
});
String catId;
String categoryName;
List<Item> item;
factory ListElement.fromJson(Map<String, dynamic> json) => ListElement(
catId: json["cat_id"],
categoryName: json["category_name"],
item: List<Item>.from(json["item"].map((x) => Item.fromJson(x))),
);
}
class Item {
Item({
this.itemId,
this.itemName,
});
String itemId;
String itemName;
factory Item.fromJson(Map<String, dynamic> json) => Item(
itemId: json["item_id"],
itemName: json["item_name"],
);
}
вот код для извлечения категории
Future<List<ListElement>> showCatagory() async {
try {
final response = await http.get(url);
if (response.statusCode == 200) {
var category = jsonDecode(response.body);
List data = category['details']['list'];
return data.map((e) => ListElement.fromJson(e)).toList();
} else {
return List<ListElement>();
}
} catch (e) {
return List<ListElement>();
}
}
FutureBuilder(
future: showCatagory(),
builder: (context, snapshot) {
}
);
вот вложенный json:
list: [
{
cat_id: "517",
category_name: "Pizza",
item: [
{
itemId: '1',
itemName: 'name'
},
{
itemId: '2',
itemName: 'name'
},
],
},
{
//other items
}
]
любая помощь, по крайней мере, для получения списка продуктов, будет высоко оценена.
Комментарии:
1. Вы получаете какие-либо ошибки с вашей текущей реализацией?
2. Нет, я могу получить все категории, перечисленные в пользовательском интерфейсе, но не уверен, как заставить элементы отображаться в базе пользовательского интерфейса для этой категории (прилагается рисунок), есть какие-либо предложения?
3. Элементы списка = List(); Результат сопоставления = jsonDecode(json); результат [«список»].forEach((категория)=> категория [«элементы»].forEach((it)=>items.add(it))); items.forEach((item)=>print(«${item[«ItemName»]}»));
Ответ №1:
Я публикую здесь код для доступа к элементам:
List items = List();
Map result = jsonDecode(json);
result["list"].forEach(
(category)=> category["items"].forEach(
(it)=> items.add(it)
)
);
items.forEach((item)=>print("${item["itemName"]}"));