我尝试将一个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。 有人可以帮帮我吗? 谢谢。
答案 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