如何在 PHP 中 JSON 编码/解码后维护对象状态
Posted
技术标签:
【中文标题】如何在 PHP 中 JSON 编码/解码后维护对象状态【英文标题】:How to maintain object state after JSON Encode/Decode in PHP 【发布时间】:2019-09-01 10:02:28 【问题描述】:以下方法将对象中的属性实例更改为数组,但要求不同,操作后响应的结果将是相同的。
<?php
$data = array('statusCode'=>200,
'statusDescripion'=>'success',
'data'=> array('companyImage'=>new StdClass(),
'profile'=>array())
);
echo "<br><br> Encoded data coming from API<br>";
echo $encodeData = json_encode($data,true);
//echo "<br><br> Decode data for Manipulation <br>";
$decodeData = json_decode($encodeData,true);
//print_r($decodeData);
if($decodeData['statusCode'] == 200)
$data_ = array('statusCode'=>$decodeData['statusCode'],
'statusDescripion'=>$decodeData['statusDescripion'],
'data'=>$decodeData['data'],
'url'=>"php.com");
echo "<br><br> After Manipulation <br>";
echo json_encode($data_,true);
【问题讨论】:
您可以通过在json_decode
中传递 true 将其更改为 PHP 中的数组,因此您需要手动将其更改回来,或者不传递 true,并通过访问属性来更新值而不是数组键。顺便说一句,json_encode
中的 true
是怎么回事?
【参考方案1】:
来自json-decode 文档:
当为 TRUE 时,返回的对象将被转换为关联数组
您使用它以便将对象转换为数组 - 如果您希望它成为对象(又名 ),只需从该行中删除
true
:
$decodeData = json_decode($encodeData,true);
收件人:
$decodeData = json_decode($encodeData);
顺便说一句,json-encode 没有得到true
作为第二个参数,我想你想要JSON_FORCE_OBJECT
【讨论】:
以上是关于如何在 PHP 中 JSON 编码/解码后维护对象状态的主要内容,如果未能解决你的问题,请参考以下文章