PHP JSON Object Create: Fill PHP objects from a JSON string

Recommend this page to a friend!
  Info   View files Example   View files View files (43)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2020-08-10 (1 month ago) RSS 2.0 feedNot yet rated by the usersTotal: 84 This week: 2All time: 9,553 This week: 169Up
Version License PHP version Categories
json-to-popo 1.0.0Custom (specified...5PHP 5, Data types
Description Author

This class can fill PHP objects from a JSON string.

It can take a string with a values defined in the JSON format and create an object of a given class with values from the JSON string.

The package parses the class definition to extract the expected names and types of the object variables, so it knows how to set the object variable values.

Innovation Award
PHP Programming Innovation award nominee
August 2020
Number 9
JSON is nowadays a popular means to represent data as a string that can be stored in files, databases or in any other type of storage.

This class provides means to load the values of an object of a given class from a JSON string by parsing the class to determine how to assign the object variables from values extracted from the data structured defined in JSON format.

Manuel Lemos
Picture of Temuri Takalandze
  Performance   Level  
Innovation award
Innovation award
Nominee: 4x

Winner: 1x

Details

json-to-popo

Fill Plain Old PHP Object with JSON content.

Build Status Coverage Status GitHub release Packagist Version GitHub license

Installation

You can install this library with Composer:

  • `composer require abgeo/json-to-popo`

Usage

Include composer autoloader in your main file (Ex.: index.php)

  • `require __DIR__.'/../vendor/autoload.php';`

Consider that you have example.json with the following content:

{
  "firstName": "Temuri",
  "lastName": "Takalandze",
  "active": true,
  "position": {
    "title": "Developer",
    "department": {
      "title": "IT"
    }
  }
}

and several POPO classes to represent this JSON data:

Department.php

<?php

class Department
{
    /
     * @var string
     */
    private $title;

    // Getters and Setters here...
}

Position.php

<?php

class Position
{
    /
     * @var string
     */
    private $title;

    /
     * @var \ABGEO\POPO\Example\Department
     */
    private $department;

    // Getters and Setters here...
}

Person.php

<?php

class Person
{
    /
     * @var string
     */
    private $firstName;

    /
     * @var string
     */
    private $lastName;

    /
     * @var bool
     */
    private $active;

    /
     * @var \ABGEO\POPO\Example\Position
     */
    private $position;

    // Getters and Setters here...
}

Note: All POPO properties must have full qualified @var annotation with the correct data type.

Now you want to convert this JSON to POPO with relations. This package gives you this ability.

Let's create new ABGEO\POPO\Composer object and read example.json content:

$composer = new Composer();
$jsonContent = file_get_contents(__DIR__ . '/example.json');

Time for magic! Call composeObject() with the contents of JSON and the main class, and this will give you POPO:

$resultObject = $composer->composeObject($jsonContent, Person::class);

Print $resultObject:

var_dump($resultObject);

//class ABGEO\POPO\Example\Person#2 (4) {
//  private $firstName =>
//  string(6) "Temuri"
//  private $lastName =>
//  string(10) "Takalandze"
//  private $active =>
//  bool(true)
//  private $position =>
//  class ABGEO\POPO\Example\Position#4 (2) {
//    private $title =>
//    string(9) "Developer"
//    private $department =>
//    class ABGEO\POPO\Example\Department#7 (1) {
//      private $title =>
//      string(2) "IT"
//    }
//  }
//}

See full example here.

Changelog

Please see CHANGELOG for details.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

Authors

License

Copyright © 2020 Temuri Takalandze. Released under the MIT license.

  Files folder image Files  
File Role Description
Files folder image.github (1 file)
Files folder imageexamples (2 files, 1 directory)
Files folder imagesrc (1 file, 1 directory)
Files folder imagetests (4 files, 1 directory)
Accessible without login Plain text file .coveralls.yml Data Auxiliary data
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file phpunit.xml.dist Data Auxiliary data
Accessible without login Plain text file README.md Doc. Read me

 Version Control Unique User Downloads Download Rankings  
 100%
Total:84
This week:2
All time:9,553
This week:169Up

For more information send a message to info at phpclasses dot org.