Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON文件导入PHP[尝试获取非对象属性时出错]_Php_Json - Fatal编程技术网

将JSON文件导入PHP[尝试获取非对象属性时出错]

将JSON文件导入PHP[尝试获取非对象属性时出错],php,json,Php,Json,我尝试将一个JSON文件导入PHP并使用它,但服务器返回:尝试获取非对象的属性。 如果我手动将JSON文件中的文本放入PHP文件,服务器将正确返回 index.php <?php if (isset($_GET['dir'])) { $dir = $_GET['dir']; $dir = $dir . "/"; } else { $dir = ""; } $about_dir = $dir . "about

我尝试将一个JSON文件导入PHP并使用它,但服务器返回:尝试获取非对象的属性。 如果我手动将JSON文件中的文本放入PHP文件,服务器将正确返回

index.php

<?php

    if (isset($_GET['dir'])) {
        $dir = $_GET['dir'];
        $dir = $dir . "/";
    } else {
        $dir = "";
    }

    $about_dir = $dir . "about.json";


    //1st try
    $json_data = file_get_contents($about_dir);
    $json_a = json_decode($json_data, true);
    echo $json_a['T'];

    //2nd try
    $json = json_decode($json_data, true);
    print $json->{"T"};

    //3th try
    $json = '{"T": "Test","About": "About T"}';
    $obj = json_decode($json);
    print $obj->{'About'};

    return $about_dir;
?>
怎么了?我试着效仿这个例子。此外,我在stackoverflow中搜索了这里,但我从未使用JSON。 有人能帮我吗?
谢谢。

您必须使用箭头访问对象元素,使用方括号访问数组元素。这是一个数组,所以这里必须使用方括号。

我使用类似的方法将JSON转换为PHP

function json2object($json){ 
  $json_array = json_decode($json, true); 
  foreach($json_array as $k=>$v){ 
    $this->{$k}=$v;
  } 
}
因此,在您的情况下,您可以使用以下内容:

  $json_a = json_decode($json_data, true); 
  foreach($json_a as $k=>$v){ 
    $obj->{$k}=$v;
  } 

希望这对您和对我都有效。

我尝试过,但似乎错误出在get\u内容中

 $json = '[
     {
    "T": "Test",
    "About": "About T"
    }
]';
    $obj = json_decode($json);
    //print $obj->{'About'};
    //print_r($obj);

    foreach($obj as $value)
    {
        echo $value->T;
        echo $value->About;
    }
如果我使用此代码:

$json = '{"T": "Test","About": "About T"}';
$obj = json_decode($json);    
var_dump(json_decode($json));
报税表为:

About T object(stdClass)#3 (2) { ["T"]=> string(4) "Test" ["About"]=> string(7) "About T" } 
NULL
如果我导入内容:

$json = file_get_contents($about_dir);
//$json = '{"T": "Test","About": "About T"}';
$obj = json_decode($json);
var_dump(json_decode($json));
并在about.json中写入以下行:{T:Test,about:about T}

报税表为:

About T object(stdClass)#3 (2) { ["T"]=> string(4) "Test" ["About"]=> string(7) "About T" } 
NULL

about.json的方括号表示法表示它是一个对象数组,因此您可以使用$json[0]->AboutYeh引用第一项,问题是I file_get_contents导入到一个字符串。