Parse JSON body
Map<String, dynamic>? get json { if (body == null) return null; try { return jsonDecode(body!) as Map<String, dynamic>; } catch (e) { return null; } }