0

我正在尝试从 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"

                }   ]

这是我在 index .php 上所做的以读取上述值

    $get_category = file_get_contents("res3/resproj-data/category-query.php");
                        $decode = json_decode($get_category);
                        print $decode;
                        ?>

不幸的是,我无法在$decode 变量中获得这些值,请告诉我如何读取这些值

4

5 回答 5

1

您文件的内容不是 JSON;它们看起来像是包含 JavaScript 代码的 HTML <script>

为了json_decode处理数据,需要删除前两行:

<script>
var json_data = 

完全不清楚为什么您的文件有.php扩展名,或者为什么它需要包含 JavaScript 代码。如果此数据文件与您的应用程序的其他部分之间存在交互,您应该在问题中提及它。

于 2013-02-17T13:13:13.260 回答
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) ; 
?>

案例二: 如果您不需要执行脚本并想使用 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
}
?>
于 2013-02-17T13:25:41.227 回答
0

如果你得到一个格式良好的 JSON 脚本,我想你想在 php 中有一个关联数组,所以使用 : json_decode($datas,true);。然后测试你的数组是否被很好地解析,它不是你想要使用的“打印”,而是var_dump. 除了显示它之外,如果您想遍历它,请使用 foreach 循环。

如果您没有像 Jon 认为的那样获得格式良好的 JSON,请检查您的脚本。

于 2013-02-17T13:16:54.853 回答
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;
于 2013-02-17T14:27:23.423 回答
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];

如果您 p​​rint_r $jsonResponse 变量,您将拥有一个关联数组,那么您将从关联数组中获取值。因为 json decode 将 json 转换为数组。

于 2013-02-17T13:36:54.723 回答