2011-12-22 3 views
1

Я пытаюсь использовать услугу Transendit.com с помощью Codeigniter. В настоящее время я пытаюсь создать страницу уведомления. Я могу получить запрос POST (в формате JSON) и записать его в файл. Странно то, что я не могу разобрать объект JSON в массив PHP, чтобы я мог извлечь из него соответствующие данные. Когда я дешифрую его перед записью в файл, файл пуст. Если код JSON не записывается в файл.Как разобрать объект JSON? Fails

Это мой код контроллера:

$result = $_POST['transloadit']; 

$result = json_decode($result); // This produces empty content in file 

$this->load->helper('file'); 

if (! write_file('./files/myfile.php', $result)) 
{ 
echo 'Unable to write the file'; 
} else { 
echo 'File written!'; 
} 

объект JSON, который отправляется на страницу можно найти здесь: http://pastie.org/3056727

+0

Это только объект json, пока вы его не расшифруете, тогда это объект stdclass PHP. –

+0

Моя основная цель - извлечь данные из этого объекта JSON и записать его в базу данных. Как я могу это сделать? (запись в файл только для того, чтобы я мог видеть результат). –

ответ

3

Вы пытаетесь написать объект StdClass (декодированного JSON) прямо в файл - это не сработает.

Не декодировать $result - используйте оригинальную строку json для записи в файл. Кроме того, .json является допустимым файловым форматом - рассмотрите возможность использования его вместо .php (может иметь смысл).

$result = $_POST['transloadit']; 
$this->load->helper('file'); 

// You can test for valid json like this: 
$is_valid_json = json_decode($result) !== NULL; 

if (! write_file('./files/myfile.json', $result)) { 
    echo 'Unable to write the file'; 
} 
else { 
    echo 'File written!'; 
} 
+0

А, ок. Но причина, по которой я пишу это в файл, - это просто «увидеть» результат. Страница, над которой я работаю, является «скрытой» страницей, на которой не отображается какая-либо информация. Он обновит базу данных информацией из объекта JSON. Моя основная цель - извлечь соответствующие данные из объекта JSON. Как я могу это сделать? Благодаря! –

+0

Вы обращаетесь к нему, как и к любому другому объекту. Скажем, '$ decoded = json_decode ($ result)'. Поэтому '$ decoded-> message' должно возвращать' 'Сборка была успешно завершена.' 'Поскольку у вас на самом деле больше, чем просто пары ключ/значение здесь, вам нужно выяснить, как * вы хотите сохранить ее в своем база данных. Я не могу принять это решение для вас, и у меня нет необходимой информации для этого. –

+0

Я не уверен, почему он не работает для вас. Поверните отчет об ошибках в режиме полного взрыва и используйте основные методы отладки, такие как 'var_dump()'. Работы отлично для меня здесь: http://codepad.org/V9ygBWgQ –

Смежные вопросы