parseBodyAsJson<T> function

T? parseBodyAsJson<T>({
  1. required List<int> bytes,
})

Implementation

T? parseBodyAsJson<T>({required List<int> bytes}) {
  var body = utf8.decode(bytes);
  var trimmedBody = body.trim();

  // Decode JSON
  var decoded = json.decode(trimmedBody);

  // Handle array case
  if (trimmedBody.startsWith('[')) {
    if (T == List<String>) {
      return (decoded as List).cast<String>() as T;
    } else if (T == List<Map<String, dynamic>>) {
      return (decoded as List).cast<Map<String, dynamic>>() as T;
    } else if (T == List) {
      return (decoded as List).cast<dynamic>() as T;
    } else if (T == List<double>) {
      return convertToList(decoded, convertToDouble) as T;
    }
    return decoded as T;
  }

  // Handle map/object case
  if (trimmedBody.startsWith('{')) {
    if (T == Map<String, dynamic>) {
      return (decoded as Map<String, dynamic>) as T;
    }
    if (T == Map<String, int>) {
      return convertToMapStringInt(decoded) as T;
    }
  }

  throw FormatException('JSON body must be an object or array');
}