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

时间:2015-07-07 04:37:02

标签: php json

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

的index.php

/** javadocs*/
class well_documented
{
   /** javadocs*/
   Variable A;
   /** javadocs*/
   Variable B;
   /** javadocs*/
   Variable C;
   /** javadocs*/
   Variable D;
   //I want to start the block comment here
   /** javadocs*/
   void method aa(){}
   /** javadocs*/
   void method bb(){}
   /** javadocs*/
   void method cc(){}
   /** javadocs*/
   void method dd(){}
   //and end it here.
}

about.json

<?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;
?>

有什么问题?我尝试按照这个例子(http://php.net/manual/en/function.json-encode.php)。另外,我在这里搜索stackoverflow,但我从不使用JSON。 有人可以帮帮我吗? 谢谢。

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我使用类似于此的方法将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;
  } 

希望这对你有用,就像对我一样。

答案 2 :(得分:0)

 $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;
    }

答案 3 :(得分:0)

我试试,但似乎错误发生在get_contents。

如果我使用此代码:

$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" } 

如果我导入内容:

$json = file_get_contents($about_dir);
//$json = '{"T": "Test","About": "About T"}';
$obj = json_decode($json);
var_dump(json_decode($json));

写下about.json这一行:{&#34; T&#34;:&#34;测试&#34;,&#34;关于&#34;:&#34;关于T&#34;}

回报是:

NULL