【问题标题】:PHP: var_dump spitting out wrong format from json_decodePHP:var_dump 从 json_decode 吐出错误的格式
【发布时间】:2012-11-28 11:06:39
【问题描述】:

我的代码:

$json_data = file_get_contents($json_url,0,null,null);  
$json_output = json_decode($json_data); 
var_dump($json_output);

这是 var_dump 在一大行中吐出的内容,根本没有格式化:

object(stdClass)#1 (1) { ["timetableresult"]=> object(stdClass)#2 (1) { ["ttitem"]=> array(17) { [0]=> object(stdClass)#3 (1) { ["segment"]=> array(8) { [0]=> object(stdClass)#4 (3) { ["segmentid"]=> object(stdClass)#5 (2) { ["mot"]=> object(stdClass)#6 (3) { ["@displaytype"]=> string(1) "G" ["@type"]=> string(1) "G" ["#text"]=> string(5) "GÃ¥ng" } ["distance"]=> int(1008) } ["departure"]=> object(stdClass)#7 (2)... etc.etc.

我做错了什么?

【问题讨论】:

  • 你安装了xdebug吗?它将添加很多额外的信息 - 以及格式化到您的 var_debug。尝试使用 print_r 而不是 var_dump)
  • 查看源代码,或执行:echo "<pre>".var_dump( json_output )."</pre>";
  • print_r 得到结果:“stdClass Object ( [timetableresult] => stdClass Object ( [ttitem] => Array ( [0] => stdClass Object ( [segment] => Array ( [0] => stdClass Object ( [segmentid] => stdClass Object ( [mot] => stdClass Object ( [@displaytype] => G [@type] => G [#text]... etc.etc"。还是在一个不过大线。
  • 约翰你的结果如下:"string(11) "json_output""
  • HTML 不呈现换行符或空格。检查页面的来源。

标签: php json var-dump


【解决方案1】:

var_dump 打印换行符。浏览器不呈现换行符。

试试echo "<pre>"; var_dump($json_output); echo "</pre>";

【讨论】:

【解决方案2】:

您正在执行 var 转储,要访问属性,您可以执行以下操作: $seg_id = $json_output->timetableresult->ttitem->segment[0]->segmentid; 我实际上并没有仔细查看您的 json 的结构,但这大约是您想要的。

或者... 如果你这样做 foreach($json_output->timetableresult->ttitem as $item) { var_dump($item); }

您将开始了解如何访问所需的所有部分。

【讨论】:

  • 你是对的!但是,我有 9000 行要通过(头疼!)!无论如何,我得到了正确的答案! :)
  • 我明白了,我没看懂问题纯粹是格式化显示,我应该多注意一下!
猜你喜欢
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2021-01-24
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多