s-mcdonald / jason
Jason (JSON) 是一个PHP库,允许您使用属性序列化类,使用构建器构建JSON结构,等等。
1.2.0
2023-05-29 14:12 UTC
Requires
- php: >=8.0
Requires (Dev)
- mockery/mockery: 1.5.1
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-05 03:31:17 UTC
README
使用属性序列化类。
文档
用法
使用属性进行序列化/编码
class User implements JsonSerializable { #[Property('userName')] public string $name; #[Property] public array $phoneNumbers; #[Property('creditCard')] public function getCreditCard(): int { $this->creditCard = $credit; } }
现在使用Json的static
或JsonSerializer
进行序列化
echo Json::serialize($user); // or use the JsonSerializer $serializer = new JsonSerializer(); echo $serializer->serialize($user); // Produces { "userName": "Foo", "phoneNumbers": [ "044455444", "244755465" ], "creditCard": 54454.5, }
JsonBuilder
echo Json::createJsonBuilder() ->addNumericProperty('id', 11) ->addStringProperty('title', "Perfume Oil") ->addNumericProperty('rating', 4.26) ->addNumericProperty('stock', 65) ->addObjectProperty( 'thumbnail', Json::createJsonBuilder() ->addStringProperty("url", "https://i.dummyjson.com/data/products/11/thumbnail.jpg") ->addStringProperty("title", "thumbnail.jpg") ) ->addArrayProperty("images", [ "https://i.dummyjson.com/data/products/11/1.jpg", "https://i.dummyjson.com/data/products/11/2.jpg" ]) ;
将创建以下内容
{ "id": 11, "title": "Perfume Oil", "rating": 4.26, "stock": 65, "thumbnail": { "url": "https://i.dummyjson.com/data/products/11/thumbnail.jpg", "title": "thumbnail.jpg" }, "images": [ "https://i.dummyjson.com/data/products/11/1.jpg", "https://i.dummyjson.com/data/products/11/2.jpg" ] }
JsonAsserter
JsonAsserter::assertStringIsValidJson('{"foo":"bar"}');
Json::createFromArray
$json = Json::createFromArray(["foo" => "baz"]); echo $json; // {"foo":"baz"} echo $json->toString(); // {"foo":"baz"} echo $json->toPretty(); // { // "foo":"baz" // }
Json::createFromUrl
$json = Json::createFromUrl("http://some-domain.com/json-endpoint.json"); echo $json->toString(); // {"foo":"baz"}
Json::createFromFile
$json = Json::createFromFile("/path/on/server.json"); echo $json->toPretty(); // { // "foo":"baz" // }
Json::createFromStringable
$json = Json::createFromStringable('{"foo":"baz"}'); echo $json->toString(); // {"foo":"baz"}
Json::mergeCombine
$json = Json::mergeCombine('{"foo":"baz"}', '{"buz":"qux"}'); echo $json->toString(); // {"foo":"baz","buz":"qux"}
Json::convertJsonToArray
$json = Json::convertJsonToArray('{"foo":"baz","buz":"qux"}'); echo $json->toString(); // ["foo" => "baz","buz" => "qux"}
Json::convertFromJsonToObject
$json = Json::convertFromJsonToObject('{"foo":"baz","buz":"qux"}'); echo $json->toString(); // instance of JsonSerializable::class with values
除了使用Json实体外,还有一个独立的编码器/解码器可以使用。
JsonEncoder
$encoded = (new JsonEncoder())->encode($someValue)->getBody();
JsonDecoder
$decoded = (new JsonDecoder())->encode($someValue)->getBody();
Json的递归迭代
foreach($json->toIterator() as $value) { // will return all property values no matter how deep // and nested in the Json structure. }
安装
通过Composer。在项目的根目录中运行以下命令。
composer require s-mcdonald/jason
依赖
- Php 8.0
许可
Jason遵循MIT许可证的条款(有关详细信息,请参阅LICENSE文件)。