如何过滤 JSON 结果

时间:2021-06-10 01:12:44

标签: json flutter filter

我有一个产品,我想在其中使用相同的数据表。我必须使用“id”过滤这个表。

我试图在 fetchNotes() id = "XPTO68" 上过滤这个 json。

有什么想法吗?

{
   "segmento": "Caminhões e Ônibus",
   "montadora": "MONTADORA",
   "veiculo": "7000",
   "motor": "MWM 4.10T",
   "anoinicial": "1994",
   "anofinal": "2005",
   "id": "XPTO68",
   "obs": "Engrenagem 15°",
   "descricao": "Bomba D´Água",
   "imagem": "XPTO6*.png"
 },
 {
   "segmento": "Caminhões e Ônibus",
   "montadora": "MONTADORA",
   "veiculo": "7000",
   "motor": "MWM 4.10T",
   "anoinicial": "1994",
   "anofinal": "2005",
   "id": "XPTO69",
   "obs": "Engrenagem 15°",
   "descricao": "Bomba D´Água",
   "imagem": "XPTO69.png"
 },

我可以在这里做什么?

Future<List<Note>> fetchNotes() async {
    var data = await DefaultAssetBundle.of(context)
        .loadString('assets/json/produtos.json');
    var body = json.decode(data);
    var notes = List<Note>();
    for (var noteJson in body) {

      notes.add(Note.fromJson(noteJson));
    }
    return notes;   }

1 个答案:

答案 0 :(得分:0)

只需将您需要过滤的 id 传递给您的函数并签入循环:

Future<List<Note>> fetchNotes({List<String> filterIds = const []}) async {
    var data = await DefaultAssetBundle.of(context)
        .loadString('assets/json/produtos.json');
    var body = json.decode(data);
    var notes = List<Note>();
    for (var noteJson in body) {
      final note = Note.fromJson(noteJson);
      if (filterIds.contains(note.id))
        continue;
      notes.add(note);
    }
    return notes;   
  }

然后调用这个函数:

final notes = await fetchNotes(filterIds: ["XPTO68"]);
相关问题