【问题标题】:return value is showing as string in place of json返回值显示为字符串代替 json
【发布时间】:2018-01-20 12:00:30
【问题描述】:

我正在使用文件获取内容方法来获取统计数据,如下所示

$val = file_get_contents('https://example.com/getStatsData');

我得到如下输出值

{"msg":"success","data":[[{"stats_abc":"1223","stats_bcd":"55684","stats_cda":"14999","stats_def":232456,"stats_efg":"432868","stats_fgh":"7558","stats_ghi":"3,778.72","stats_date":"20-01-2018 17:00 PM"}],null]}

但是当我将它解码为 json_decode($val) 时。它没有显示任何东西。 谁能帮我把以上数据作为数组/对象获取?

提前致谢

【问题讨论】:

  • json和解码都没有问题,在这里可以正常工作,所以你显示解码结果的方式肯定有问题。由于您的问题中不存在该代码,我只能猜测为什么会这样......也许使用:print_r(json_decode($val)); 而不是您现在正在做什么?
  • 是的 KIKO 我正在使用 print_r(json_decode($val));打印价值,但它没有显示任何东西
  • 好吧,那么$val 有问题,即使你说你检查过了。您问题中的代码不完整,我们永远无法通过这种方式找到您的问题。我已经发布了一个有效且完整的代码的答案。

标签: javascript php json codeigniter


【解决方案1】:

这确实有效:

<?php

$json = '{
  "msg": "success",
  "data": [
    [{
      "stats_abc": "1223",
      "stats_bcd": "55684",
      "stats_cda": "14999",
      "stats_def": 232456,
      "stats_efg": "432868",
      "stats_fgh": "7558",
      "stats_ghi": "3,778.72",
      "stats_date": "20-01-2018 17:00 PM"
    }], null
  ]
}';

echo '<pre>';
print_r(json_decode($json));
echo '</pre>';

结果:

stdClass Object
(
    [msg] => success
    [data] => Array
        (
            [0] => Array
                (
                    [0] => stdClass Object
                        (
                            [stats_abc] => 1223
                            [stats_bcd] => 55684
                            [stats_cda] => 14999
                            [stats_def] => 232456
                            [stats_efg] => 432868
                            [stats_fgh] => 7558
                            [stats_ghi] => 3,778.72
                            [stats_date] => 20-01-2018 17:00 PM
                        )
                )
            [1] => 
        )
)

只是为了表明json本身是好的。

【讨论】:

  • 当我使用 $val 响应作为静态变量值时,json_decode 正在工作,但直接它不是
  • 回显您直接阅读的$val,并将其与静态变体仔细比较。有什么区别吗?如果没有,它应该可以工作。
  • 抱歉,我的输出是 |{ "msg":"success", "data":[ [{ "stats_abc":"16404", "stats_bcd":" 55684”,“stats_cda”:“14999”,“stats_def”:232456,“stats_efg”:“432868”,“stats_fgh”:“7558”,“stats_ghi”:“3,778.72”,“stats_date”:“20-01- 2018 年晚上 18:00" }],null ] }
  • 当我通过在线 json 查看器格式化相同的响应时,json_decode() 正在工作,否则不会
  • 对不起,我不能再帮你了。
【解决方案2】:

请试试这个: 我已将您的响应放入本地 json 文件并调用,它工作正常。检查这个:

<?php
       $val= file_get_contents('http://localhost/j/test.json');
       print_r(json_decode($val,true));
?>

【讨论】:

    【解决方案3】:

    首先确保 $val 不为空。 然后使用json_decode($val, 1)。正如预期的那样,这会将其转换为关联数组。

    【讨论】:

    • 我用过 print_r(json_decode($val,true));但它显示为空白
    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 2012-03-05
    • 2017-10-09
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多