我正在尝试从php文件中读取json数据。这是我的代码。
category-query.php(这是我的json数据)
<script>
var json_data =
[
/*
!please notice
you can add the category name SpecialFeature,
but it will be igone in the main menu
*/
//cat 1
{
"categoryName" : "Dishes",
"categoryImageUrl" : "cat_01.jpg" ,
"categoryRootMenu" : false ,
"categoryStyle" : "one"
},
//cat 2
{
"categoryName" : "Dessert",
"categoryImageUrl" : "cat_02.jpg" ,
"categoryRootMenu" : false ,
"categoryStyle" : "two"
},
//cat 3
{
"categoryName" : "Dimsum",
"categoryImageUrl" : "cat_04.jpg" ,
"categoryRootMenu" : false ,
"categoryStyle" : "submenu"
} ]
以下是我在索引.php上所做的事情,以阅读上述值
$get_category = file_get_contents("res3/resproj-data/category-query.php");
$decode = json_decode($get_category);
print $decode;
?>
遗憾的是,我无法在$decode
变量中获得这些值,请告诉我如何阅读这些值
答案 0 :(得分:1)
您的文件内容不是JSON;它们看起来像是通过<script>
包含JavaScript代码的HTML。
为了json_decode
处理数据,需要删除两个第一行:
<script>
var json_data =
完全不清楚为什么您的文件有.php
扩展名,或者为什么需要包含JavaScript代码。如果此数据文件与应用的其他部分之间存在交互,则应在问题中提及。
答案 1 :(得分:0)
如果你得到一个结构良好的JSON脚本,我想你想在php中有一个关联数组,所以使用:json_decode($datas,true);
。
然后测试你的数组是否被很好地解析,它不是你想要使用的“打印”,而是var_dump
。
除了显示它之外,如果你想遍历它,请使用foreach循环。
如果你没有像Jon想的那样得到格式良好的JSON,请查看你的脚本。
答案 2 :(得分:0)
一个简单的解决方案允许您只使用PHP。 JS不是必需的。
案例1: 如果你使用php文件,你可以只包含它(它将被执行) 文件:category-query.php
<?php
$categories = array() ;
//Push categories and cast them to objects
$categories[] = (object) array(
"categoryName" => "Dimsum",
"categoryImageUrl" => "cat_04.jpg",
"categoryRootMenu" => false,
"categoryStyle" => "submenu"
) ;
header('Content-Type: application/json');
echo json_encode($categories) ;
?>
案例2: 如果您不需要执行脚本并且想要使用file_get_contents:
文件:category-query.php
[{"categoryName":"Dimsum","categoryImageUrl":"cat_04.jpg","categoryRootMenu":false,"categoryStyle":"submenu"}]
文件:index.php
<?php
$data = file_get_contents("category-query.php") ;
$categories = json_decode($data) ;
if (!is_null($categories)){
Use your array with objects
}
?>
答案 3 :(得分:0)
请参阅我的代码示例
$Link = SITE.'service/Controller.php?request='.ABS.'&action='.SEARCH_CLIENT.'&data='.json_encode($data);
$ResultArray = array();
$Result = file_get_contents($Link);
$jsonResponse = json_decode($Result,true);
$ResultArray = $jsonResponse[JSON_DATA];
如果print_r $ jsonResponse变量,你将有一个关联数组,那么你将从assoicate数组中获取值。 Beacuse json解码将json转换为数组。
答案 4 :(得分:0)
除了使用file_get_contents()从您控制的文件中获取数据是非常奇怪的,如果源是utf8,您只能成功地将JSON解码为PHP数组。试试这个:
$get_category = utf8_encode(file_get_contents("res3/resproj-data/category-query.php"));
$decode = json_decode($get_category, true);
print_r $decode;