我有这个json
$x = {"response":{},"status":{"detail":{"operation":"internal","errormessage":"Login session for token xxx is expired.","error":"Login session for token is expired or invalid.","errorcode":"500"},"success":false}}
当我尝试$ x->成功
时它告诉我Trying to get property of non-object
我做错了什么?
答案 0 :(得分:2)
您需要json_decode()
json字符串才能访问它:
<?php
$x = '{"response":{},"status":{"detail":{"operation":"internal","errormessage":"Login session for token xxx is expired.","error":"Login session for token is expired or invalid.","errorcode":"500"},"success":false}}';
$i = json_decode($x);
var_dump($i);
?>
这样你就可以这样测试:
// checks if false
if(!$i->status->success) {....
答案 1 :(得分:2)
首先使用$data = json_decode($json_string, true);
然后你需要访问状态索引。
$data = json_decode($json_string, true);
$status = $data['status']['success'];
答案 2 :(得分:2)
让我们跟踪此代码并在每个阶段显示结果以便更好地理解
这是你的json
$ x ='{“response”:{},“status”:{“detail”:{“operation”:“internal”,“errormessage”:“令牌xxx的登录会话已过期。”,“错误“:”令牌的登录会话已过期或无效。“,”errorcode“:”500“},”success“:true}}';
的var_dump($ x)的;
这将为您输出
string(207)“{”response“:{},”status“:{”detail“:{”operation“:”internal“,”errormessage“:”令牌xxx的登录会话已过期。“,”错误“:”令牌的登录会话已过期或无效。“,”errorcode“:”500“},”success“:true}}”
你可以看到这是一个json字符串。
现在首先将json_decode()转换为json对象
$ a = json_decode($ x);
的var_dump($ a)的
输出
object(stdClass)#1(2){[“response”] =&gt; object(stdClass)#2(0){} [“status”] =&gt; object(stdClass)#3(2){[“detail”] =&gt; object(stdClass)#4(4){[“operation”] =&gt; string(8)“internal”[“errormessage”] =&gt; string(39)“令牌xxx的登录会话已过期。” [ “错误”] =&GT; string(46)“令牌的登录会话已过期或无效。” [ “错误代码”] =&GT; string(3)“500”} [“success”] =&gt; bool(true)}}
可以像这样访问
echo $ a-&gt; status-&gt; success;