这是我的第一个问题,我长期处理这个问题,但我不知道它在哪里。
我想从文件中读取一个Json字符串,(但确实如此)但是当我使用" json_decode "不起作用,我试图将文件内容复制到一个变量中,并且效果很好,我不明白为什么,可以有人帮忙。
谢谢!
这里有代码:
<HTML>
<p>-JSON STRING (From File)-</p>
<?PHP
$jsonStr = "";
$jsonStr =$jsonStr . file_get_contents("./Config.json");
echo "Json String: " . $jsonStr;
?>
<p>-JSON DATA-</p>
<?PHP
$jsonDec = json_decode($jsonStr, true);
$name = $jsonDec['config'][0]['nombre'];
echo "Json data: " . $name;
echo "</br>--------------------------------------------------------------------------------";
?>
<p>-JSON STRING (From var)-</p>
<?PHP
$jsonStr = '{ "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] } ';
echo "Json String: " . $jsonStr;
?>
<p>-JSON DATA-</p>
<?PHP
$jsonDec = json_decode($jsonStr, true);
$name = $jsonDec['config'][0]['name'];
echo "Json data: " . $name;
?>
以下是我得到的结果:
-JSON STRING (From File)-
Json String:{&#34; config&#34; :[{&#34; name&#34; :&#34; Eduvi&#34;,&#34;链接&#34; :&#34; LINKURL&#34;},{&#34; name&#34; :&#34; Eduvi&#34;,&#34;链接&#34; :&#34; LINKURL&#34;},{&#34; name&#34; :&#34; Eduvi&#34;,&#34;链接&#34; :&#34; LINKURL&#34;}]}
-JSON DATA- Json数据:
-JSON STRING(来自var) - Json String:{&#34; config&#34; :[{&#34; name&#34; :&#34; Eduvi&#34;,&#34;链接&#34; :&#34; LINKURL&#34;},{&#34; name&#34; :&#34; Eduvi&#34;,&#34;链接&#34; :&#34; LINKURL&#34;},{&#34; name&#34; :&#34; Eduvi&#34;,&#34;链接&#34; :&#34; LINKURL&#34;}]}
-JSON DATA- Json数据:Eduvi
答案 0 :(得分:0)
Undefined index: nombre in /tmp/test.php on line 10
=&gt;意味着你调用一个不存在的索引,正如你自己在数据中看到的那样;如果是,它将显示包含的值输入文件site.txt
:
{ "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] }
php code'test.php':
<?php
echo("\n-JSON STRING (From File)-\n");
$jsonStr = "";
$jsonStr = trim( file_get_contents("./site.txt") ); // fix
echo "Json String: " . $jsonStr."\n";
echo("\n-JSON DATA-\n");
$jsonDec = json_decode($jsonStr, true);
$name = $jsonDec['config'][0]['nombre']; //index nombre does not exist, if it is 'name', then it works
echo "Json data: " . $name;
echo "\n--------------------------------------------------------------------------------\n";
echo("\n-JSON STRING (From var)-\n");
$jsonStr = '{ "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] } ';
echo "Json String: " . $jsonStr."\n";
echo("\n-JSON DATA-\n");
$jsonDec = json_decode($jsonStr, true);
$name = $jsonDec['config'][0]['name'];
echo "Json data: " . $name."\n";
?>
使用php test.php
-JSON STRING (From File)-
Json String: { "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] }
-JSON DATA-
PHP Notice: Undefined index: nombre in /tmp/test.php on line 10
Json data:
--------------------------------------------------------------------------------
-JSON STRING (From var)-
Json String: { "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] }
-JSON DATA-
Json data: Eduvi
修复'name'后输出:
-JSON STRING (From File)-
Json String: { "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] }
-JSON DATA-
Json data: Eduvi
--------------------------------------------------------------------------------
-JSON STRING (From var)-
Json String: { "config" :[ {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"}, {"name" : "Eduvi", "link" : "LINKURL"} ] }
-JSON DATA-
Json data: Eduvi
答案 1 :(得分:0)
如果您的Config.json是以UTF-8(with BOM)编码的,则json_decode函数将失败并返回NULL。
您可以通过修剪$ jsonStr字符串中的BOM来解决此问题:
$jsonStr = trim(file_get_contents("config.json"), "\xEF\xBB\xBF");
除此之外,您还没有解决现有价值(请参阅vv01f&#39> 的答案)
祝你好运!
答案 2 :(得分:0)
我正在测试这个例子,完全正常,基本文件是ob.php
$jsonStr = "";
$jsonStr =$jsonStr . file_get_contents("myfile.json");
echo "Json String one : " . $jsonStr;
$jsonDec = json_decode($jsonStr, true);
$name = $jsonDec['config'][0]['name'];
echo "Json data: " . $name;
echo "</br>-------------------------";
之后添加json文件myfile.json
{
"config": [{
"name": "Eduvi",
"link": "LINKURL"
}, {
"name": "Eduvi",
"link": "LINKURL"
}, {
"name": "Eduvi",
"link": "LINKURL"
}]
}
它显示name的值,即数组中的第一个对象