• Stars
    star
    148
  • Rank 244,223 (Top 5 %)
  • Language
    PHP
  • License
    Other
  • Created over 7 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Gson implemented in PHP

Gson PHP

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight

This library is a port of google/gson written in PHP. Its purpose is to easily handle the conversion between PHP objects and JSON. It shares some of google/gson's goals such as:

  • A simple interface using toJson and fromJson methods
  • Enable serialization and deserialization of 3rd party classes
  • Allow schema differences between PHP objects and JSON

And in addition:

  • Utilize PHP 7 scalar type hints to be intelligent about property types
  • Limit the number of annotations required to use
  • Allow serialization decisions based on runtime information

Overview

Here are some simple use cases to get a feel for how the library works

If you have a PHP object you want to convert to JSON

// $object obtained elsewhere

$gson = Gson::builder()->build();
$json = $gson->toJson($object);

What this is doing is using the provided GsonBuilder to set up the Gson object with sensible defaults. Calling Gson::toJson and passing in an object will return a string of JSON.

If you need to, you can force the type Gson will use to serialize

// $object obtained elsewhere

$gson = Gson::builder()->build();
$json = $gson->toJson($object, MyCustomClass::class);

The reverse is very similar

// $json obtained elsewhere

$gson = Gson::builder()->build();
$fooObject = $gson->fromJson($json, Foo::class);

Now we call Gson::fromJson and pass in the json as a string and the type of object we'd like to map to. In this example, we will be getting an instantiated Foo object back.

Gson has a concept of "normalized" forms. This just means data that has been decoded with json_decode, or can be passed into json_encode.

// $object obtained elsewhere

$gson = Gson::builder()->build();
$jsonArray = $gson->toNormalized($object);
$object = $gson->fromNormalized($jsonArray, Foo::class);

Documentation

Installation

This library requires PHP 7.1

composer require tebru/gson-php

Be sure and set up the annotation loader in one of your initial scripts.

\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader('class_exists');

License

This project is licensed under the MIT license. Please see the LICENSE file for more information.