Флаттерный анализ значения Json вложенного массива с использованием условных операторов

#json #flutter #dart

#json #трепетать #дротик

Вопрос:

У меня есть таблица csv, которую я преобразовал в json, и я хочу проанализировать этот json в flutter на основе условных операторов.

Например, первым условием было бы, если тип является планетой, и если имя соответствует указанному значению, то остальные сведения отображаются в виде списка, например, Символы, Цвет и расстояние.

Вводом будут только тип и имя, поэтому на основе этого мне нужно проанализировать json и извлечь правильные данные.

Либо у меня может быть около 6 отдельных json для каждого типа, но мне это не кажется хорошей идеей.

Любые предложения о том, как я могу использовать условные операторы или, возможно, преобразовать этот json в другой формат, чтобы я мог анализировать с помощью индексов или элементов в Flutter.

 [  {  "Type": "Planet",  "Name": "Jupiter",  "Charcs": "Largest",  "Color": "blue",  "distance": "near"  },  {  "Type": "Planet",  "Name": "Earth",  "Charcs": "Inhabited",  "Color": "green",  "distance": "nearby"  },  {  "Type": "Planet",  "Name": "Mars",  "Charcs": "Red Planet",  "Color": "red",  "distance": "very near"  },  {  "Type": "Star",  "Name": "Polaris",  "Charcs": "abcddw",  "Color": "casc",  "distance": "far"  },  {  "Type": "Star",  "Name": "Sirius",  "Charcs": "qwqwd",  "Color": "asfaf",  "distance": "very far"  },  {  "Type": "Star",  "Name": "Betelgeuse",  "Charcs": "qwdwqeq",  "Color": "asfasfa",  "distance": "far far away"  } ]  

Ответ №1:

Поскольку это массив, вы можете использовать цикл, который фильтрует каждый элемент в отдельный ключ JSON.

 var array = [  {  "Type": "Planet",  "Name": "Jupiter",  "Charcs": "Largest",  "Color": "blue",  "distance": "near"  },  {  "Type": "Planet",  "Name": "Earth",  "Charcs": "Inhabited",  "Color": "green",  "distance": "nearby"  },  {  "Type": "Planet",  "Name": "Mars",  "Charcs": "Red Planet",  "Color": "red",  "distance": "very near"  },  {  "Type": "Star",  "Name": "Polaris",  "Charcs": "abcddw",  "Color": "casc",  "distance": "far"  },  {  "Type": "Star",  "Name": "Sirius",  "Charcs": "qwqwd",  "Color": "asfaf",  "distance": "very far"  },  {  "Type": "Star",  "Name": "Betelgeuse",  "Charcs": "qwdwqeq",  "Color": "asfasfa",  "distance": "far far away"  } ]  var json = {} array.forEach(e =gt; {  json[e.Type] ||= {}  json[e.Type][e.Name] = {Charcs: e.Charcs,Color: e.Color,distance:e.distance} }) console.log(json) 

Определение приведенного выше кода заключается в следующем:

  1. json[e.Type] ||= {} : Это создает ключ из типа объекта, если он еще не существует
  2. json[e.Type][e.Name] = {Charcs: e.Charcs,Color: e.Color,distance:e.distance} : Это помещает данные объекта в его собственный вложенный ключ

Комментарии:

1. Или, если вы хотите, чтобы данные были массивом вместо json, просто замените {Charcs: e.Charcs,Color: e.Color,distance:e.distance} на [e.Charcs,e.Color,e.distance] .