atiksoftware/gson-php

PHP Gson: 将 PHP 对象转换为 JSON 并从 JSON 转换为 PHP 对象

3.0 2024-01-20 18:47 UTC

This package is auto-updated.

Last update: 2024-09-20 20:36:37 UTC


README

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight

此库是使用 PHP 编写的 google/gson 的移植版本。其目的是轻松处理 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 文件以获取更多信息。