0

PHPファイルからjsonデータを読み取ろうとしています.Hereが私のコードです。

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 変数でこれらの値を取得できません。これらの値を読み取る方法を教えてください

4

5 に答える 5

1

ファイルの内容は JSON ではありません。を介して JavaScript コードを含む HTML のように見えます<script>

json_decodeデータを処理するには、最初の 2 行を削除する必要があります。

<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) ; 
?>

ケース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
}
?>
于 2013-02-17T13:25:41.227 に答える
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];

$ jsonResponse変数をprint_rすると、連想配列が作成され、連想配列から値が取得されます。jsonデコードはjsonを配列に変換するためです。

于 2013-02-17T13:36:54.723 に答える
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

整形式の JSON スクリプトを取得する場合は、php で連想配列を使用する必要があると思いますので、 : を使用しますjson_decode($datas,true);。次に、配列が適切に解析されているかどうかをテストするために、使用したいのは「印刷」ではありませんがvar_dump. 表示とは別に、トラバースしたい場合は foreach ループを使用します。

Jon が考えるように整形式の JSON が得られない場合は、スクリプトを見直してください。

于 2013-02-17T13:16:54.853 に答える