Ошибка декодирования PHP json - Веб-крюк Мандрила


Я пытаюсь обработать данные веб-крючка Mandrills. Я получу запрос $_POST с некоторыми данными Json, при обработке этих данных у меня возникла странная проблема.

Если я расшифрую данные, предоставленные по ПОЧТЕ, я просто получу пустой var:( Есть идеи, почему?

ИЗМЕНИТЬ:

Самая странная вещь на свете... Если я использую Json напрямую, он не работает, но если я вставлю его в базу данных и возьму оттуда, он отлично работает

$json = $_POST['mandrill_events'];
print_r(json_decode($json,true));
//False

$data['content'] = $_POST['mandrill_events'];
$id = $db->insert('mail', $data);
$get = $db->select('content', 'mail', 'id = "'.(int) $id.'"');  //= mysql_fetch_array($data,MYSQL_ASSOC)
$json = $get['content'];
print_r(json_decode($json,true));
//True

Старый код

/*
print_r($_POST) 

Array
(
    [mandrill_events] => [{"event":"inbound","ts":1393490345,"msg":{"raw_msg":"Received: from"}}]
    (shortend)
)
*/

$test_var = '[{"event":"inbound","ts":1393490345,"msg":{"raw_msg":"Received: from"}}]';

$getMessage = $_POST['mandrill_events'];
print_r($getMessage);
//Until now everything works fantastic
$getMessage = json_decode($getMessage,true);
print_r($getMessage);
//Nothing - the output is empty ;( 

$getTestMessage = json_decode($test_var,true);
print_r($getTestMessage);
//works fine
Author: user3359899, 2014-02-27

4 answers

Используйте косые черты. В вашем случае:

$json = $_POST['mandrill_events'];
print_r(json_decode(stripslashes($json),true));
 5
Author: Paweł Walaszek, 2014-04-10 08:37:47

Я реализовал так, что это может работать нормально для меня, пожалуйста, проверьте это

      $data = $_POST;

    $restult_data_decode = json_decode($data['mandrill_events']);


   // print_r($restult_data_decode);
    //exit;




    $message_id     =  $restult_data_decode[0]->_id;

    $status         =  $restult_data_decode[0]->msg->state;

    $reject_reason  =  $restult_data_decode[0]->msg->reject;


    echo "message_id............ $message_id  .............status:$status..........reject reason : $reject_reason ";
 2
Author: Raja Rama Mohan Thavalam, 2014-09-05 07:46:41

Вероятно, на вашем сервере включена функция magic_quotes. Это должно сработать:

 $events = json_decode(stripslashes($_POST['mandrill_events']),1);
 print_r($events);
 1
Author: Rid Iculous, 2014-08-05 03:02:04

Когда вы печатаете данные ПУБЛИКАЦИИ, они отображаются в формате html. Возможно, в ваших почтовых данных есть " или ", которые приходят вместо двойных кавычек. Проверьте это.

 0
Author: Rohit Awasthi, 2014-02-27 10:19:38