> 백엔드 개발 > PHP 튜토리얼 > 对象如何转成json

对象如何转成json

WBOY
풀어 주다: 2016-06-13 13:02:46
원래의
968명이 탐색했습니다.

对象怎么转成json
现在有一个对象 
user Object ( [User_id:private] => 1 [Account:private] => abc [Password:private] => abc [User_name:private] => zhangsan [Creat_time:private] => 2012-11-12 14:56:32 ) 
我要打包成json格式 (实际情况是要传到另个php端[webservice]) 
希望实现的具体流程:
php端1 -> 对象 -> json字符串 -> php端2 ->json字符串 -> 变回对象或者数组 (最好是数组)
用 json_decode 出来的总是 stdClass Object ( ) 不知道什么意思 求交流指点!
------最佳解决方案--------------------
因为你想还原成 user 对象,所以才让你用序列化函数

既然你不需要还原成php对象,那就用json好了
$p = new user;
$s = json_encode($p);

$o = json_decode($s); //还原成对象
$a = json_decode($s, true); //还原成数组


------其他解决方案--------------------
json_decode 出来的是OBJECT对象,没错。
如果你要decode成USER对象,可能就需要用到反射啦。。。

------其他解决方案--------------------
json 是与js交互用的数据格式,不会携带php才有的信息。所以不可能原样还原

你应该使用php的序列化函数

class T {<br />
  public $var = 123;<br />
}<br />
$p = new T;<br />
$s = serialize($p);<br />
$x = unserialize($s);<br />
print_r($x);<br />
로그인 후 복사
T Object
(
    [var] => 123
)


------其他解决方案--------------------
感谢版主的回复!对象序列化之后是这样的
O:4:"user":2:{s:13:"userUser_id";s:1:"1";s:13:"userAccount";s:3:"zzz";}
还不是json格式。莫非要截取字符串? 最好不要啦 - - 以后数据量大了 不知道有没隐患
直接序列化就传的话 也是字符串。但是做webservice要考虑到跨平台 比如传到java .net甚至其他的  所以最好还是能够传个json吧
简单点说,我的需求就是希望能把一个对象转成json 就最好了
user Object ( [User_id:private] => 1 [Account:private] => zzz ) 
成一个json格式

------其他解决方案--------------------
先谢谢您的关注!
现在如果将一个简单的对象直接json_encode() 输出的是一个空的对象 {}
还是达不到要求!
思路清晰了很多  继续研究!
------其他解决方案--------------------
找了解决方案了。
PHP能够将一个对象强转成数组 $user = json_encode((array)$user);
这样就可以打包成json了
对象  :   user Object ( [User_id:private] => 1 [Account:private] => zzz ) 
转成数组后json_encode()   :   {"\u0000user\u0000User_id":1,"\u0000user\u0000Account":"zzz"}
接收到json用json_decode()转回数组  : Array ( [userUser_id] => 1 [userAccount] => zzz )
再次感谢xuzuning版主的帮助,谢谢!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿