programing

DateTime 개체를 json으로 변환하는 방법

javajsp 2023. 3. 15. 19:18

DateTime 개체를 json으로 변환하는 방법

변환 방법DateTimejson을 반대합니까?던지다Converting object to an encodable object failed.이게 버그인가요?아니면 그냥dart아직 지원해주지 않았나요?해결 방법이 있으면 알려주세요.

래퍼를 사용하는 대신 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;
}

오브젝트(DateTime)를 인코딩 가능한 다른 오브젝트 JSON.encode(DateTime)로 인코딩하고 있습니다.Now()는 다트 프로그래밍에서는 사용할 수 없습니다.

따라서 dart supported Date to String 변환(마지막에 : .toIso8601String())으로 변환합니다.

JSON.encode(날짜 시간).이것으로 에러가 해결됩니다.// Date Time을 사용합니다.예를 들어 Now()를 입력합니다.

첫 번째: JSON은 날짜/시간 인코딩을 지원하지 않습니다.이것은 통상, 상대방에 따라 관례에 의해서 행해집니다.일반적으로 문자열 표현(ISO8601은 Microsoft의 ASP).NET 는 커스텀 포맷을 사용합니다).

번째: Dart에서 Date Time 필드를 포함하는 개체를 JSON으로 변환하려면 어떻게 해야 합니까?
(요컨대 런타임은 Date Time을 시리얼화하지 않습니다.커스텀 시리얼라이제이션 로직을 사용하여 래퍼를 작성해야 합니다.)

다트에서 지도를 변환할 수도 있습니다.

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);

언급URL : https://stackoverflow.com/questions/21813942/how-to-convert-datetime-object-to-json