2013-02-17 5 views
0

Я пытаюсь прочитать json-данные из php-файла. Вот мой код.php: чтение json данных в php с использованием файла _get_content

категория-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 переменной, пожалуйста, скажите мне, как я могу прочитать эти значения

ответ

1

Содержимое вашего файла не JSON; они выглядят как HTML, который включает код JavaScript через <script>.

Для того, чтобы json_decode для обработки данных в первые две строки должны были бы быть удалены:

<script> 
var json_data = 

Это совершенно не понятно, почему ваш файл имеет .php расширение, или почему он должен был бы включать в себя код JavaScript , Если есть взаимодействия между этим файлом данных и другими частями вашего приложения, вы должны указать его в вопросе.

+0

в основном я проектирования системы, которая Виль считывать данные с другого сервера, так что мой cleint сказал мне, чтобы использовать только JSon fromat есть ли лучший способ сделать это просто дайте мне knwo – burning

+0

@burning : Ну, вы не используете формат JSON. '

0

Если вы получаете хорошо сформированный скрипт JSON, я думаю, вы хотите иметь ассоциативный массив в php, поэтому используйте: json_decode($datas,true);. Затем, чтобы проверить, хорошо ли проанализирован массив, это не «печать», которую вы хотите использовать, а var_dump. И если вы хотите отобразить его, если вы хотите пройти его, используйте цикл foreach.

Если вы не получили хорошо сформированный JSON, как считает Джон, просмотрите свой сценарий.

0

Простое решение позволяет использовать только php. JS не требуется.

Случай 1: Если вы используете файл PHP, вы можете просто включить его (он будет выполнен) файла: категория-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:

Файл: категория-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 
} 
?> 
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 decode преобразует json в массив.

+0

пример кода работает только в том случае, если исходный файл содержит только JSON, что не относится к OP – charlietfl

0

Кроме того, чрезвычайно сложно получить данные из файла, находящегося под вашим контролем с помощью file_get_contents(), вы можете только успешно декодировать JSON в массив PHP, если источником является utf8.Попробуйте это:

$get_category = utf8_encode(file_get_contents("res3/resproj-data/category-query.php")); 
$decode = json_decode($get_category, true); 
print_r $decode; 
Смежные вопросы