PHPackages                             pakman/json-parser - 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. pakman/json-parser

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

pakman/json-parser
==================

v1.0(5y ago)04PHPPHP &gt;=7.1.0CI failing

Since May 19Pushed 5y ago1 watchersCompare

[ Source](https://github.com/PakSerVal/json-parser)[ Packagist](https://packagist.org/packages/pakman/json-parser)[ RSS](/packages/pakman-json-parser/feed)WikiDiscussions master Synced 6d ago

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

JSON Parser
===========

[](#json-parser)

Простой парсер для валидации и преобразования JSON в нужный формат

Установка
---------

[](#установка)

```
composer require pakman/json-parser
```

### Типы

[](#типы)

По умолчанию парсер поддерживает 6 типов данных

- integer
- float
- string
- phone
- array
- object

Помимо этого можно добавлять собственные типы.

#### Пример использования

[](#пример-использования)

Исходный JSON

```
{
    "foo": {
        "a": "1",
        "b": "str",
        "c": "2.1",
        "d": [
            "1",
            "2"
        ],
        "e": {
            "a": "1"
        }
    },
    "bar": "8 (950) 288-56-23"
}

```

Валидация и приведение к нужному формату

```
$json = '{"foo": {"a": "1", "b": "str", "c": "2.1", "d": ["1", "2"], "e": {"a": "1"}}, "bar": "8 (950) 288-56-23"}';

$typeDefinitions = TypeDefinitions::define()
    ->object('foo', TypeDefinitions::define()
        ->integer('a')
        ->string('b')
        ->float('c')
        ->array('d', TypeDefinitions::INTEGER)
        ->object('e', TypeDefinitions::define()->integer('a'))
    )
    ->phone('bar')
;
$parser = new JsonParser($typeDefinitions);
$result = $parser->parse($json);

var_dump($result);
```

Результатом будет:

```
array(4)
  'foo' =>
    array(4)
      'a' => int(1)
      'b' => string(3) "str"
      'c' => float(2.1)
      'd' =>
        array (2)
          0 => int(1)
          1 => int(2)
      'e' =>
        array(1)
          'a' => int(1)
  'bar' => string(11) "79502885623"
```

#### Добавление собственного типа

[](#добавление-собственного-типа)

1. Создать парсер, который будет приводить данные к нужному типу (Класс должен наследовать `pakman\jsp\parsers\Parser`):

    ```
    ...
    use pakman\jsp\parsers\Parser;

    class HelloWorldParser extends Parser {

        public function parse($data): array {
            if ($data !== 'Hello') {
                throw new ValidationException();
            }

            return $data . ' world!';
        }
    }
    ```
2. Добавить класс в конфигурационный файл `src/config/parsers.php`:

    ```
    ...
    use path\to\HelloWorldParser;

    return [
        ...
        'HELLO_WORLD_TYPE' => 'HelloWorldParser::class'
    ];
    ```
3. Использовать его

    ```
    $json = '{"foo": {"Hello"}}';

    $typeDefinitions = TypeDefinitions::define()
        ->add('foo', 'HELLO_WORLD_TYPE')
    ;
    $parser = new JsonParser($typeDefinitions);
    $result = $parser->parse($json);

    var_dump($result);

    // array(1)
    //   'foo' => string(12) "Hello world!"
    ```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 66.7% 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

2189d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/039cd8fbf3a8479ba1f8a23c0db4a0fc3a2b9aa7aea62d7549156413b4e32a93?d=identicon)[PakSerVal](/maintainers/PakSerVal)

---

Top Contributors

[![SpakV](https://avatars.githubusercontent.com/u/51234236?v=4)](https://github.com/SpakV "SpakV (2 commits)")[![PakSerVal](https://avatars.githubusercontent.com/u/22763909?v=4)](https://github.com/PakSerVal "PakSerVal (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/pakman-json-parser/health.svg)

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

###  Alternatives

[mtdowling/jmespath.php

Declaratively specify how to extract elements from a JSON document

2.0k472.8M135](/packages/mtdowling-jmespathphp)[opis/closure

A library that can be used to serialize closures (anonymous functions) and arbitrary data.

2.6k230.0M284](/packages/opis-closure)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)[michelf/php-markdown

PHP Markdown

3.5k52.4M345](/packages/michelf-php-markdown)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)

PHPackages © 2026

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