byjg/anydataset-json

JSON abstraction dataset. Anydataset is an agnostic data source abstraction layer in PHP.

Maintainers

👁 byjg

Package info

github.com/byjg/php-anydataset-json

pkg:composer/byjg/anydataset-json

Fund package maintenance!

byjg

Statistics

Installs: 8 269

Dependents: 0

Suggesters: 0

Stars: 3

Open Issues: 0

6.0.0 2025-11-24 18:02 UTC

Requires

Requires (Dev)

Suggests

  • ext-curl: *

Conflicts

None

Replaces

None

MIT 4f31aa45f571c87ae270404368e776bdf918d6ef

This package is auto-updated.

Last update: 2026-06-10 18:30:46 UTC


README

sidebar_key anydataset-json
tags
php anydataset

JSON Dataset Abstraction

JSON abstraction dataset. Anydataset is an agnostic data source abstraction layer in PHP.

👁 Sponsor
👁 Build Status
👁 Opensource ByJG
👁 GitHub source
👁 GitHub license
👁 GitHub release

See more about Anydataset here.

Concept

The AnyDataset-Json is an abstraction layer to read a JSON data and transform it into a dataset, and you can manipulate it as a table.

Some features:

  • Read a JSON file or string
  • Navigate through nested JSON structures using path notation
  • Define and extract fields with validation
  • Create dynamic fields using closures
  • Validate data types (string, int, float, bool)
  • Handle required fields and default values

Basic Example

example.json:

{
 "menu":{
 "header":"SVG Viewer",
 "items":[
 {
 "id":"Open",
 "metadata":{
 "version":"1",
 "date":"NA"
 }
 },
 {
 "id":"OpenNew",
 "label":"Open New",
 "metadata":{
 "version":"2",
 "date":"2021-10-01"
 }
 }
 ]
 }
}

example.php:

$json = file_get_contents('example.json');

$dataset = new \ByJG\AnyDataset\Json\JsonDataset($json);

// Basic usage with field definitions
$iterator = $dataset->getIterator("/menu/items")
 ->withFields([
 \ByJG\AnyDataset\Json\JsonFieldDefinition::create("name", "id"),
 \ByJG\AnyDataset\Json\JsonFieldDefinition::create("version", "metadata/version")
 ->required()
 ->ofTypeString()
 ]);

foreach ($iterator as $row) {
 echo $row->get('name'); // Print "Open", "OpenNew"
 echo $row->get('version'); // Print "1", "2"
}

Features

Install

composer require "byjg/anydataset-json"

Running the Unit tests

vendor/bin/phpunit

Dependencies

flowchart TD
 byjg/anydataset-json --> byjg/anydataset
 byjg/anydataset-json --> ext-json
Loading

Open source ByJG