Skip to content

Fix: Make JsonResponse use a single response body source#278

Merged
techmahedy merged 1 commit intodoppar:3.xfrom
techmahedy:techmahedy-3.x
May 6, 2026
Merged

Fix: Make JsonResponse use a single response body source#278
techmahedy merged 1 commit intodoppar:3.xfrom
techmahedy:techmahedy-3.x

Conversation

@techmahedy
Copy link
Copy Markdown
Member

JsonResponse now uses a single buffered body as the source of truth for what gets sent. This removes the old split where the class cached one JSON body while separately streaming another output path.

What changed

Converted JsonResponse into a buffered JSON response that encodes its payload once and sends that exact body
Kept StreamedJsonResponse as the dedicated streaming JSON path and removed its fake prebuilt body cache
Updated Response::prepareBody() so generic objects are no longer assumed to implement toArray()

Why

This makes JSON response behavior more predictable across the request lifecycle:

getBody() now matches the bytes actually sent for normal JSON responses streamed JSON stays truly streamed instead of pretending to have a cached body arbitrary objects no longer risk failing because Doppar blindly calls toArray() on them

Tests

Added and updated response tests to cover:

  1. buffered JsonResponse body matches sent output
  2. StreamedJsonResponse does not cache a pretend body
  3. generic objects without toArray() serialize safely

@techmahedy techmahedy merged commit 027bd7e into doppar:3.x May 6, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant