How to convert DateTime object to json

后端 未结 4 1266
忘掉有多难
忘掉有多难 2021-01-01 12:47

How to convert DateTime object to json? It throws Converting object to an encodable object failed., so is this a bug or it\'s just dart

相关标签:
4条回答
  • 2021-01-01 13:30

    first: JSON does not support date/time encoding.. this is usually done by convention depending on the other party - usually a string representation (e.g. ISO8601 but Microsoft's ASP.NET uses a custom format).

    second: How to convert an object containing DateTime fields to JSON in Dart?
    (In short: Runtime does not serialise DateTime. You'll need to create a wrapper with custom serialisation logic.)

    0 讨论(0)
  • 2021-01-01 13:34

    Rather than using a wrapper, you can also create your own custom encoder passing the toEncodable argument.

    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;
    }
    
    0 讨论(0)
  • 2021-01-01 13:34

    you are encoding object(DateTime) into other encodable object JSON.encode(DateTime.Now()) which is not possible in dart programming.

    So, convert it to dart supported Date to String conversion that is : add : .toIso8601String() at the end

    JSON.encode(DateTime.Now().toIso8601String()),this resolves your error. // i am taking DateTime.Now() just for example.

    0 讨论(0)
  • 2021-01-01 13:35

    You could also just convert your map in Dart.

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

    Usage: var _map = encodeMap(_data);

    0 讨论(0)
提交回复
热议问题