toJson function

dynamic toJson(
  1. dynamic source, {
  2. dynamic container,
})

Implementation

dynamic toJson(dynamic source, {dynamic container}) {
  if (source is num ||
      source == null ||
      identical(source, true) ||
      identical(source, false)) {
    return source;
  } else if (source is String) {
    if (source.isEmpty) return source;
    try {
      return jsonDecode(source); // can decode nest json object
    } catch (e) {
      return source;
    }
  } else if (source is List) {
    container ??= [];
    container.addAll(
      source.map((e) => toJson(e, container: container)).toList(),
    );
    return container;
  } else if (source is Map) {
    container ??= {};
    for (var entry in source.entries) {
      container[entry.key] = toJson(entry.value, container: container);
    }
    return container;
  } else {
    return source;
  }
}