编辑:发表了我自己的答案,解决了它。对不起,我浪费了我在这个愚蠢的事情上的时间。
最初,我使用URL获取JSON文件,然后将file_get_contents(url)用作php变量以获取传递给它的JSON字符串。由于我的问题,我假设这会将变量初始化为特殊的JSON类型。
如果我尝试“动态地”创建变量(出于问题目的而进行了硬编码),并在$ data3中使用json_encode($ json),则它的 not 格式不会使我的JS FullCalendar Event可以阅读。我试图通过传递一个与$ data完全相同的直接字符串来回显$ data2作弊。对于我的日历JSON订阅源无效。
所以我需要以某种正确的语法获取$ data3,同时保留JSON属性。
如何处理json_encode输出的语法?
page-template.php
$url = get_stylesheet_directory_uri() . '/calendar.json';
$data = file_get_contents($url);
$data2 = '{ "className" : "mooncenter", "title" : "big energy", "start" : "2019-04-23" }';
$json= '{ "className" : "mooncenter", "title" : "big energy", "start" : "2019-04-23" }';
$data3 = json_encode($json);
echo $data;
echo $data2;
echo $data3;
回声输出。
//$data outputs
{ "className" : "mooncenter", "title" : "big energy", "start" : "2019-04-23" }
//$data2 outputs the same, but does not work because not json encode?
{ "className" : "mooncenter", "title" : "big energy", "start" : "2019-04-23" }
//$data3 outputs weirdly, with double quotes or slashes depending on
// if I encapsuled the PHP init with '' or "". Below is one example.
"{ \"className\" : \"mooncenter\", \"title\" : \"big energy\", \"start\" : \"2019-04-23\" }"
我需要$ data3看起来像前两个一样,同时保留json编码属性。
这可能吗?这样可以解决我动态创建JSON的问题,而无需传递URL,也可以让我永远安宁。
答案 0 :(得分:0)
由于我的问题,我假设这会将变量初始化为特殊的JSON类型。
您不正确。 json_encode()
将PHP对象(通常是数组)转换为JSON字符串。 PHP中没有JSON类型。
您的文本文件已经包含JSON文本,因此使用file_get_contents()
将该文件的内容加载到变量中已经为您提供了JSON字符串。您无需再次编码。出问题的地方不在此代码内。
答案 1 :(得分:0)
好的,尝试添加更改代码,如下所示
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
$myJSON = json_encode($myObj);
echo $myJSON;
输出
{"name":"John","age":30,"city":"New York"}
这肯定会为您提供帮助,通过这种方式,您无需手动将键值对作为字符串:)欢呼声
答案 2 :(得分:0)
$data3['name'] = "John";
$data3['age'] = 30;
$data3['city'] = "New York";
$myJSON = json_encode($myObj);
echo $myJSON;
//decode
$phpArray = json_decode($myJSON, true);
print_r($phpArray);
答案 3 :(得分:-1)
所以变量的调用实际上是
// <?php echo $data2; ?>
以上崩溃,但下面崩溃:
// <?php echo $data; ?>
不崩溃。我以为是因为它在内存中,但是我重新打开了隐身模式,但它仍然有效。我认为注释行//没有任何作用,因为文本在VSCode中没有变绿色,并且原始的$ data有效。
我本应该从一开始就删除注释行,但要在工作日12h的时候放屁。为什么它会一遍又一遍地工作老实说,我没有精力去关心。问题解决了。