parseBodyAsJson<T> function
T?
parseBodyAsJson<
T>({ - 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');
}