【问题标题】:json data parse with php returns no data [duplicate]用php解析json数据不返回数据[重复]
【发布时间】:2020-12-04 22:51:09
【问题描述】:

PHP 初学者,请点击此处。

我想创建一个小型网站,该网站将解析 JSON 网页中的数据并将其放在我的网站上,但由于某种原因,没有返回任何数据(“长度”的值) PHP代码:

    <?
    $jsonData = file_get_contents('web site link');
    $data = json_decode($jsonData, TRUE);

    foreach($data as $stats )
    {
        echo $stats->length;
    }

//  var_dump($jsonData);
?>

Json 数据(完整数据:http://logs.tf/json/2652721#76561198044689160):

    "length": 1674,
"players": {
    "[U:1:131277951]": {
        "team": "Blue",
        "class_stats": [{
            "type": "soldier",
            "kills": 16,
            "assists": 2,
            "deaths": 21,
            "dmg": 7505,
            "weapon": {
                "tf_projectile_rocket": {
                    "kills": 16,
                    "dmg": 7505,
                    "avg_dmg": 58.6328125,
                    "shots": 0,
                    "hits": 0
                }
            },
            "total_time": 1674
        }],

我做错了什么? :(

【问题讨论】:

  • 您的 json 无效。发布正确的json文件

标签: php json loops parsing


【解决方案1】:

乍一看,您的 json 看起来无效。检查这里,https://jsonlint.com/ 应该是这样的。

{
    "length": 1674,
    "players": {
        "[U:1:131277951]": {
            "team": "Blue",
            "class_stats": [{
                "type": "soldier",
                "kills": 16,
                "assists": 2,
                "deaths": 21,
                "dmg": 7505,
                "weapon": {
                    "tf_projectile_rocket": {
                        "kills": 16,
                        "dmg": 7505,
                        "avg_dmg": 58.6328125,
                        "shots": 0,
                        "hits": 0
                    }
                },
                "total_time": 1674
            }]
        }
    }
}

第二次我用来自https://jsonplaceholder.typicode.com/posts 的示例 json 尝试了你的代码,它可以工作。

<?php
  
   $jsonData = file_get_contents(
        "https://jsonplaceholder.typicode.com/posts");
    $data = json_decode($jsonData, TRUE);
        
    foreach($data as $stats )
    {
        print_r( $stats );
    }

【讨论】:

  • 这是原始 json 页面 logs.tf/json/2652721#76561198044689160,我相信它“看起来”不错
  • 它可以工作。 ` $jsonData = file_get_contents("logs.tf/json/2652721#76561198044689160"); $data = json_decode($jsonData, TRUE); print_r($data); `
  • 我什至复制粘贴了你的代码,绝对没有数据输出。它适用于除我和我的网站之外的其他所有人。
  • 你在某处使用 ob_start 吗?它停止回声。
【解决方案2】:

参考documentationjson_decode($jsonData, TRUE);返回数组,如果你想将这些值作为对象检索,删除seconde参数。试试json_decode($jsonData);

<?
$jsonData = file_get_contents('web site link');
$data = json_decode($jsonData);

foreach($data as $stats ){
    echo $stats->length;
}

//  var_dump($jsonData);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2015-05-07
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2020-03-04
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多