我无法访问使用php的json_decode
函数检索到的json-Array中的信息。
json文件如下所示:
{"code":0,"message":"Okay","model":{"results":[{"message":"Okay","balance":0,"openPositions":[[],[]],"firstDepositDate":XXX,"currencySign":"€","email":"X.X@X.com","code":0}]},"result":"success"}
我使用以下php代码获取内容:
$json = file_get_contents($json_url);
$data = json_decode($json,true);
echo '<pre>' . print_r($json, true) . '</pre>';
结果print_r显示看起来就像我期望的那样,看起来像json。
但是,我无法弄清楚访问变量。每当我尝试像
这样的东西$test = $json['model']['results']['balance'];
脚本抛出错误,我无法识别。我已经知道我是否像这样访问$json
变量:
$test = $json[n]; // returns the nth character, e.g. n = 0 $test = "{", n = 2 $test = "c"
如果我尝试访问变量,脚本也没有抛出错误:
$test = $json['code']; // returns "{"
有人可以帮我弄清楚如何导航这个数组吗?
谢谢!
答案 0 :(得分:4)
results
键是一个真正的数组,而不是无序映射(键/值)。此外,您应该访问已解码的$data
,而不是$json
字符串。
这应该适合你:
$test = $data['model']['results'][0]['balance'];
这应该让你知道:
{"results":[{"message"
^ ^
| |
| \-- Start of an array
|
\-- Start of an object
答案 1 :(得分:1)
您收到类似于Cannot use object of type stdClass as array in (...)
的错误吗?
json_decode返回类型stdClass
的对象,这是php中唯一的对象(据我所知),哪些属性不能像数组一样被访问。您必须按如下方式访问它们:
$json = '{"code":0,"message":"Okay","model":{"results":[{"message":"Okay","balance":0,"openPositions":[[],[]],"firstDepositDate":"XX","currencySign":"€","email":"X.X@X.com","code":0}]},"result":"success"}';
$obj = json_decode($json);
var_dump($obj->message); //works
var_dump($obj["message"]); //throws exception
答案 2 :(得分:0)
JSON数组中存在错误。 &#34; firstDepositDate&#34;:XXX不是有效值。应该是一个字符串&#34; XXX&#34;。
此外,您正在尝试使用错误的变量。解码后的数据应该是PHP数组。在这种情况下,$ data [&#39;代码&#39;]而不是$ json [&#39;代码&#39;]