losthost/json-object

Dynamic JSON object wrapper with snake_case field access and Telegram-style getters

Maintainers

Package info

github.com/Datahider/JsonObject

pkg:composer/losthost/json-object

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-04-19 14:04 UTC

This package is auto-updated.

Last update: 2026-04-19 14:04:53 UTC


README

Минимальная библиотека для динамической обертки над JSON-данными.

Идея:

  • вход: JSON-строка или stdClass;
  • доступ через Telegram-style геттеры вида getMessageThreadId();
  • поддержка isBot() и аналогичных булевых методов;
  • автоматическое преобразование PascalCase/camelCase в snake_case;
  • вложенные JSON-объекты автоматически заворачиваются в JsonObject;
  • JSON-массивы остаются массивами, но их элементы-объекты тоже заворачиваются в JsonObject.

Текущее поведение:

  • getMessage() ищет поле message;
  • getMessageThreadId() ищет message_thread_id;
  • isBot() ищет is_bot;
  • если поля нет, возвращается null;
  • scalar значения возвращаются как есть.

Пример:

use losthost\JsonObject\JsonObject;

$update = new JsonObject(<<<'JSON'
{
  "message": {
    "message_id": 10,
    "message_thread_id": 20,
    "chat": {
      "id": 9,
      "is_forum": true
    },
    "from": {
      "id": 29,
      "is_bot": true
    }
  }
}
JSON);

$update->getMessage()->getMessageId(); // 10
$update->getMessage()->getMessageThreadId(); // 20
$update->getMessage()->getChat()->getId(); // 9
$update->getMessage()->getChat()->getIsForum(); // true
$update->getMessage()->getFrom()->isBot(); // true
$update->getMessage()->getNoSuchField(); // null