PHPackages                             kelunik/streaming-json - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. kelunik/streaming-json

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

kelunik/streaming-json
======================

A streaming JSON parser for Amp.

v1.0.0(8y ago)18351MITPHP

Since Jul 10Pushed 8y ago1 watchersCompare

[ Source](https://github.com/kelunik/streaming-json)[ Packagist](https://packagist.org/packages/kelunik/streaming-json)[ RSS](/packages/kelunik-streaming-json/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (7)Versions (2)Used By (0)

streaming-json
==============

[](#streaming-json)

A streaming JSON parser for Amp.

Installation
------------

[](#installation)

```
composer require kelunik/streaming-json

```

Usage
-----

[](#usage)

```
$parser = new StreamingJsonParser($inputStream);

while (yield $parser->advance()) {
    $parsedItem = $parser->getCurrent();
}
```

Options can be passed to the constructor just like for `json_decode`. The parser will consume the passed input stream and is itself an `Amp\Iterator` that allows consumption of all parsed items. Any malformed message will fail the parser. If the input stream ends, the parser will try to parse the last item and will complete the iterator successfully or fail it, depending on whether the last item was malformed or not.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3231d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/12852217f3369e8144bc9ce6ac2a2341c28c5512c5b3df5749bfbbd45b6877ff?d=identicon)[kelunik](/maintainers/kelunik)

---

Top Contributors

[![kelunik](https://avatars.githubusercontent.com/u/2743004?v=4)](https://github.com/kelunik "kelunik (11 commits)")

---

Tags

amphpasyncjsonphpstreaming

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/kelunik-streaming-json/health.svg)

```
[![Health](https://phpackages.com/badges/kelunik-streaming-json/health.svg)](https://phpackages.com/packages/kelunik-streaming-json)
```

###  Alternatives

[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[danog/madelineproto

Async PHP client API for the telegram MTProto protocol.

3.4k855.0k18](/packages/danog-madelineproto)[amphp/parallel

Parallel processing component for Amp.

84746.2M74](/packages/amphp-parallel)[amphp/http-server

A non-blocking HTTP application server for PHP based on Amp.

1.3k4.5M81](/packages/amphp-http-server)[amphp/redis

Efficient asynchronous communication with Redis servers, enabling scalable and responsive data storage and retrieval.

165634.7k44](/packages/amphp-redis)[amphp/http-client

An advanced async HTTP client library for PHP, enabling efficient, non-blocking, and concurrent requests and responses.

7286.8M137](/packages/amphp-http-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
