You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用OpenFoodFacts API提取商品名称(JSON数据)遇阻

解决Flutter中提取OpenFoodFacts API商品名称的问题

核心要点

OpenFoodFacts的v2 API返回的JSON结构是对象嵌套,而非数组,所以不能用数组索引[1]来取值。商品名称直接位于顶层的product对象下,基础字段是product_name;多语言场景可使用product_name_xx格式的字段,比如product_name_en对应英文名称。

Flutter代码示例

  1. 先在pubspec.yaml中添加http包依赖:
dependencies:
  http: ^1.1.0
  1. 请求并提取商品名称的实现代码:
import 'dart:convert';
import 'package:http/http.dart' as http;

Future<String?> getProductName(String barcode) async {
  final url = Uri.parse('https://world.openfoodfacts.org/api/v2/product/$barcode.json');
  final response = await http.get(url);
  
  if (response.statusCode == 200) {
    final Map<String, dynamic> data = jsonDecode(response.body);
    // 提取通用商品名称
    final productName = data['product']?['product_name'];
    // 若需指定语言名称,比如英文:
    // final productNameEn = data['product']?['product_name_en'];
    return productName;
  } else {
    // 处理请求失败场景
    return null;
  }
}

关键说明

  • 摒弃数组索引用法:API返回的顶层数据是{...}格式的对象,而非[...]数组,之前参照的TypeScript示例逻辑不适用,直接通过键名访问对象属性即可。
  • 空安全防护:用?操作符避免null报错,部分商品可能存在名称字段缺失的情况。

内容的提问来源于stack exchange,提问作者Felix_Gagne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:09:56