无法从json中获取json变量

时间:2014-07-01 06:28:32

标签: php json

我有这个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

我做错了什么?

3 个答案:

答案 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) {....

Example

答案 1 :(得分:2)

首先使用$data = json_decode($json_string, true);

解码你的json

然后你需要访问状态索引。

$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;