php 解析json字符串,json_object

实现php json_decode的强类型解析

Description

php解析json格式字符串到指定的对象中

Software Architecture

php解析json格式字符串到指定的对象中,实现json的强类型解析。

Installation

composer require stlswm/json-object

Instructions

应用举例

一、json编码

use stlswm\JsonObject\Json;

//Json::marshal($value, int $options = 0, int $depth = 512);

二、json返编码

2.1、类型定义

规则:

1、继承stlswm\JsonObject\ClassMap

2、申明所有属性

3、如果属性是对象或数据则要重写getClassMap申明目标对象

属性是对象:

/**

* @return array

*/

public function getClassMap(): array

{

return [

'data' => InvoiceCreateDataRes::class,

];

}

属性是一维数组:

/**

* @return array

*/

public function getClassMap(): array

{

return [

'data' => [

InvoiceCreateDataRes::class

],

];

}

属性是二维数组:

/**

* @return array

*/

public function getClassMap(): array

{

return [

'data' => [

[

InvoiceCreateDataRes::class

]

],

];

}

以此类推

类申明举例

namespace stlswm\PiaoZone\Response;

use stlswm\JsonObject\ClassMap;

/**

* Class InvoiceCreateReq

*

* @package stlswm\PiaoZone\Response

*/

class InvoiceCreateRes extends ClassMap

{

//先申明所有属性

/**

* @var string

*/

public $name;

/**

* @var int

*/

public $sex;

/**

* @var stdClass

*/

public $data;

/**

* @return array data为对象在getClassMap中申明data的源对象名称

*/

public function getClassMap(): array

{

return [

'data' => InvoiceCreateDataRes::class,

];

}

}

2.2、json字符串反解析用法

应用举例:

namespace stlswm\PiaoZone\Business;

use Exception;

use GuzzleHttp\Exception\GuzzleException;

use stlswm\JsonObject\Json;

use stlswm\PiaoZone\Client;

use stlswm\PiaoZone\Request\AccessTokenReq;

use stlswm\PiaoZone\Response\AccessTokenRes;

/**

* Class AccessToken

*

* @package stlswm\PiaoZone\AccessToken

*/

class AccessToken

{

/**

* @param Client $client

* @param AccessTokenReq $accessTokenReq

*

* @return AccessTokenRes

* @throws GuzzleException

* @throws Exception

*/

public static function req(Client $client, AccessTokenReq $accessTokenReq): AccessTokenRes

{

$accessTokenRes = new AccessTokenRes;

$response = $client->request('/base/oauth/token', $accessTokenReq);

$bool = Json::unMarshal($response, $accessTokenRes);

if (!$bool) {

throw new Exception('无法解析返回:' . $response);

}

return $accessTokenRes;

}

}

Contribution

Fork the repository

Create Feat_xxx branch

Commit your code

Create Pull Request

Gitee Feature

You can use Readme_XXX.md to support different languages, such as Readme_en.md, Readme_zh.md

Explore open source project https://gitee.com/explore

The most valuable open source project GVP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值