Подтвердить что ты не робот

Как преобразовать объект DateTime в json

Как преобразовать объект DateTime в json? Он выбрасывает Converting object to an encodable object failed., так это ошибка, или просто dart еще не поддерживают ее? Если вы, ребята, знаете некоторое обходное решение, пожалуйста, дайте мне знать.

4b9b3361

Ответ 1

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

import 'dart:convert' show JSON;

void main() {
  var dt = new DateTime.now();
  var str = JSON.encode(dt, toEncodable: myEncode);
  print(str);
}

dynamic myEncode(dynamic item) {
  if(item is DateTime) {
    return item.toIso8601String();
  }
  return item;
}

Ответ 2

сначала: JSON не поддерживает кодирование даты/времени. Обычно это делается по соглашению в зависимости от другой стороны - обычно это строковое представление (например, ISO8601, но Microsoft ASP.NET использует собственный формат).

second: Как преобразовать объект, содержащий поля DateTime, в JSON в Dart?
(Короче говоря: Runtime не сериализует DateTime. Вам нужно создать оболочку с пользовательской логикой сериализации.)

Ответ 3

Вы также можете просто конвертировать свою карту в дартс.

Map<String, dynamic> encodeMap(Map<String, dynamic> map) {
  map.forEach((key, value) {
    if (value is DateTime) {
      map[key] = value.toString();
    }
  });
  return map;
}

Использование: var _map = encodeMap(_data);