#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)
Определение приведенного выше кода заключается в следующем:
json[e.Type] ||= {}
: Это создает ключ из типа объекта, если он еще не существует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]
.