Какой код Dart требуется для преобразования этого JSON в класс Dart - PullRequest
0 голосов
/ 14 июля 2020

У меня много json для синтаксического анализа в виде карты > (Я думаю?)

ниже приведен небольшой пример для проверки:

{"LEFT":{ "446927m": ["2020-02-21T03:01:04.023+00:00","2020-02-13T21:42:29.829+00:00"], "536278n": ["2019-10-04T07:06:09.878+00:00"]},

"MIDDLE":{ "938012c": ["2020-02-21T00:59:37.909+00:00","2020-01-23T22:39:46.789+00:00","2020-02-06T23:12:33.197+00:00"], "920283b": ["2020-02-07T04:16:39.994+00:00","2020-01-23T22:39:59.787+00:00"]},

"RIGHT":{ "192321k":["2020-02-20T21:31:32.437+00:00","2020-02-07T05:13:11.197+00:00"]}}

Мне просто трудно понять, как поместить это в класс, чтобы я мог преобразовать из JSON в Дарт. LEFT, MIDDLE и RIGHT фиксированы, но может быть неограниченное количество строк с датами от 0 до 4.

Ответы [ 3 ]

1 голос
/ 14 июля 2020

вы можете преобразовать любые json данные для любого языка в этом https://app.quicktype.io/ веб, попробуйте:)

0 голосов
/ 14 июля 2020

Используйте json.decode(jsonString) для преобразования строки json в Map<String, Map<String, List>>

Однако вместо разбора ключевого слова josn map у вас должен быть класс модели, который позволяет преобразовать json отображает в отдельные поля.

Проверьте этот сайт: Json -to-Dart Здесь, если вы скопируете / вставите строку json. Он автоматически сгенерирует класс модели дротика с помощью методов toMap и из фабричных методов Map.

ПРИМЕЧАНИЕ: Для автоматического анализа ваша строка ключа всегда должна быть одинаковой. Если это не так, поищите шаблоны, например строку, заканчивающуюся на m или c, а затем создайте свой ключ из нее

0 голосов
/ 14 июля 2020

Вот функция конвертера, которую вы можете использовать для преобразования вышеуказанных JSON данных в строго типизированный объект -

import 'dart:convert';

Map<String, Map<String, List<String>>> convertData(String json) {
  //Our target type
  Map<String, Map<String, List<String>>> convertedData = Map();

  //Convert JSON String to Dynamic Map
  Map<String, dynamic> jsonData = jsonDecode(json);

  //Converted Function
  jsonData.forEach((String key, dynamic value) {
    convertedData.putIfAbsent(key, () {
      Map<String, List<String>> data = Map();
      value.forEach((String dataKey, dynamic dataValue) {
        data.putIfAbsent(dataKey, () => List<String>.from(dataValue));
      });
      return data;
    });
  });

  //Return the result
  return convertedData;
}

Затем вы можете использовать эту функцию следующим образом -

main() {

//Our Sample Data
  String sampleData = //JSON Data
      """{
   "LEFT":{
      "446927m":[
         "2020-02-21T03:01:04.023+00:00",
         "2020-02-13T21:42:29.829+00:00"
      ],
      "536278n":[
         "2019-10-04T07:06:09.878+00:00"
      ]
   },
   "MIDDLE":{
      "938012c":[
         "2020-02-21T00:59:37.909+00:00",
         "2020-01-23T22:39:46.789+00:00",
         "2020-02-06T23:12:33.197+00:00"
      ],
      "920283b":[
         "2020-02-07T04:16:39.994+00:00",
         "2020-01-23T22:39:59.787+00:00"
      ]
   },
   "RIGHT":{
      "192321k":[
         "2020-02-20T21:31:32.437+00:00",
         "2020-02-07T05:13:11.197+00:00"
      ]
   }
}""";

  print(convertData(sampleData));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...