tebru/gson-php

PHP版的Gson:将PHP对象与JSON之间的转换


README

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight

此库是将google/gson用PHP重写的。它的目的是轻松处理PHP对象与JSON之间的转换。它共享一些google/gson的目标,例如

  • 使用toJsonfromJson方法提供的简单接口
  • 支持第三方类的序列化和反序列化
  • 允许PHP对象与JSON之间的模式差异

此外

  • 利用PHP 7标量类型提示来智能地处理属性类型
  • 限制使用时所需的注释数量
  • 允许根据运行时信息做出序列化决策

概述

以下是一些简单用例,以了解库的工作方式

如果您有一个要转换为JSON的PHP对象

// $object obtained elsewhere

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

所做的是使用提供的GsonBuilder设置合理的默认值来配置Gson对象。调用Gson::toJson并传入一个对象将返回一个JSON字符串。

如果您需要,可以强制Gson使用的序列化类型

// $object obtained elsewhere

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

反向操作非常相似

// $json obtained elsewhere

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

现在我们调用Gson::fromJson并将json作为字符串传入,以及我们希望映射到的对象类型。在这个例子中,我们将得到一个实例化的Foo对象。

Gson有一个“标准化”形式的概念。这仅仅意味着使用json_decode解码的数据,或者可以传递给json_encode的数据。

// $object obtained elsewhere

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

文档

安装

此库需要PHP 7.1

composer require tebru/gson-php

确保在您的初始脚本之一中设置注释加载器。

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

许可证

本项目采用MIT许可证。有关更多信息,请参阅LICENSE文件。