Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Json Streamer

Json Streamer Laravel Package

symfony/json-streamer

Stream JSON efficiently with Symfony JsonStreamer. Read and write large JSON structures incrementally from streams to reduce memory usage, with powerful helpers for streaming serialization/deserialization and handling big payloads in real time.

View on GitHub
Deep Wiki
Context7

Provides powerful methods to read/write data structures from/into JSON streams.

Frequently asked questions about Json Streamer
How does Symfony JsonStreamer compare to Laravel’s native `json_encode()`/`json_decode()` for large JSON files (e.g., 100MB+)?
Symfony JsonStreamer processes JSON incrementally, reducing memory usage from O(n) to O(1) for large payloads. Native functions load entire JSON into memory, risking OOM errors on files >10MB. JsonStreamer is ideal for Laravel CLI tools, background jobs, or API exports where memory efficiency is critical.
Can I use JsonStreamer with Laravel’s `StreamedResponse` for chunked JSON API responses?
Yes. JsonStreamer integrates seamlessly with `StreamedResponse` to stream JSON chunks as they’re generated, improving client-side latency. This is perfect for Laravel APIs returning large datasets (e.g., CSV exports, analytics reports) without buffering the entire response in memory.
What Laravel versions and PHP requirements does JsonStreamer support?
JsonStreamer requires PHP 8.1+ and Symfony 6.0+ (Laravel 10+) or Symfony 5.4+ (Laravel 9). For Laravel 8, use Symfony 5.x, but note Symfony’s JsonStreamer was introduced in v6.0. Always check Symfony’s [upgrade guide](https://symfony.com/doc/current/setup/upgrade.html) for compatibility.
How do I handle circular references or custom objects in JSON streams?
JsonStreamer leverages Symfony’s Serializer component, which supports circular references via `CircularReferenceHandler`. For custom objects, implement `NormalizerInterface` or use Symfony’s `ObjectNormalizer`. Laravel’s existing Serializer integration (e.g., `serializer:encode`) can be extended to work with streams.
Is JsonStreamer suitable for real-time Laravel Echo/Pusher events with large payloads?
Yes, but with caveats. JsonStreamer can serialize event payloads incrementally, reducing memory spikes. However, Pusher/Echo typically expect synchronous JSON. Use it for background processing (e.g., queue jobs) and emit smaller, batched events to clients via WebSockets.
What’s the performance overhead of JsonStreamer vs. synchronous JSON for small payloads (<1MB)?
For small payloads, JsonStreamer adds ~10–20% overhead due to streaming abstraction. If memory isn’t an issue, Laravel’s native `json_encode()` is faster. Benchmark with your payload size—JsonStreamer shines at >10MB, where native functions risk OOM.
How do I integrate JsonStreamer into a Laravel Artisan command for processing large JSON files?
Use Symfony’s `JsonStreamer` class to read/write streams directly in your command. Example: `$streamer = new JsonStreamer(); $streamer->read($fileStream)` for parsing. For writing, emit chunks with `$streamer->emit($data)`. Wrap in a service class to reuse logic across commands.
Are there alternatives to JsonStreamer for Laravel that avoid Symfony dependencies?
For PHP, consider `ijson-php` (a port of Python’s `ijson`) or `spatie/fast-json-streamer` (Laravel-focused). However, these lack Symfony’s built-in normalization for complex objects. JsonStreamer’s strength is its tight integration with Symfony’s Serializer, which Laravel already uses for APIs.
How do I handle interrupted streams (e.g., client disconnects during `StreamedResponse`)?
JsonStreamer doesn’t auto-retry on disconnections, but Laravel’s `StreamedResponse` handles this gracefully. Use PHP’s `stream_set_blocking()` or Symfony’s `StreamEmitter` to detect interruptions. For robustness, implement chunk-level validation (e.g., checksums) if data integrity is critical.
What’s the best way to abstract JsonStreamer in Laravel to reduce Symfony dependency complexity?
Create a facade or service wrapper (e.g., `app/JsonStreamer.php`) that exposes Laravel-friendly methods like `streamJsonToResponse($data)` or `parseLargeJson($file)`. Use dependency injection to bind Symfony’s `JsonStreamer` internally. This hides Symfony’s complexity while keeping the package’s benefits.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata