PHPackages                             etconsilium/php-json-fix - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. etconsilium/php-json-fix

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

etconsilium/php-json-fix
========================

Proxy json\_decode() and Fix invalid JSON (via runkit)

317PHP

Since Oct 22Pushed 5y ago2 watchersCompare

[ Source](https://github.com/etconsilium/php-json-fix)[ Packagist](https://packagist.org/packages/etconsilium/php-json-fix)[ RSS](/packages/etconsilium-php-json-fix/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

invalid JSON fix
================

[](#invalid-json-fix)

installation
============

[](#installation)

`composer.json`

```
{
	require: {
		"etconsilium/php-json-fix": "*"
	}
}

```

description
===========

[](#description)

Скрипт чинит некоторые известные проблемы:

- пустые значения
- забытые запятые в конце массивов
- спецсимволы вроде \\x0
- в качестве бонуса удаляет js-style комментарии
- @TODO: требуется обработка кавычек: как замена одиночных на двойные, так и закавычивание голых данных

Сразу раскрою секрет: всё это во имя вселенской справедливости и удобной работы с конфигами. Но, чтобы не возиться с обёртками данных каждый раз, используется жёсткий хак с подменой стандартных функции PHP через runkit. Так как `APD` и `runkit` являются библиотеками `pecl`, и при этом не имеют работающих пакетов для акутальных версий языка, рункит собирается из исходников. Детали установки см. `composer.json` &amp; `pre-install.sh`. Проверено на Debian8 + PHP5.6.2-cli.

Источники вдохновения перечислены в коде.

enjoy! :)

ps: считаю излишним писать объектный интерфейс, ибо тысячи их, или функции вроде `json_fix()` и `json_restore()`, ибо вы либо ставите пакет и юзаете хак везде, либо нет.

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/834b0bab4f3d2068b5575aea761fb012ea3baccee2db973be9bcf12cde3c3ebb?d=identicon)[etconsilium](/maintainers/etconsilium)

---

Top Contributors

[![etconsilium](https://avatars.githubusercontent.com/u/2026534?v=4)](https://github.com/etconsilium "etconsilium (3 commits)")

### Embed Badge

![Health badge](/badges/etconsilium-php-json-fix/health.svg)

```
[![Health](https://phpackages.com/badges/etconsilium-php-json-fix/health.svg)](https://phpackages.com/packages/etconsilium-php-json-fix)
```

PHPackages © 2026

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