Я пытаюсь создать веб-сайт для Mandrill, который отправит электронное письмо отправителю, когда отсканированное ранее письмо отскакивает. Я могу получить данные в формате JSON от Mandrill, но не могу разобрать, что данные для отправки к исходному отправителю:Невозможно проанализировать поля JSON из-за ведущей скобки в PHP
<?php
require_once 'mandrill-api-php/src/Mandrill.php'; //Not required with Composer
$mandrill = new Mandrill('*myapikey*');
$json = stripslashes($_POST['mandrill_events']);
$jsondata = json_decode($json,true);
$subject = $jsondata['event'];
$message = "STRIPSLASHES: ".$json."----JSONDATA----".$jsondata;
$emailAddress = "*[email protected]*";
mail($emailAddress, $subject, $message);
?>
Вот как выглядит JSON данные $, как в переменной $ сообщений. Это буквальное копирование и вставка из тестовой электронной почте я получаю:
STRIPSLASHES: [{ "событие": "спам", "сообщение": { "TS": 1365109999, "субъект":» Это пример webhook message "," email ":" [email protected] "," отправитель ":" [email protected] "," tags ": [" webhook-example "]," opens " : [{ "TS": 1365111111}], "щелкает": [{ "TS": 1365111111, "URL": "http://mandrill.com"}], "состояние": "отправлено", "метаданные" : { "user_id": 111}, "_ идентификатор": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa", "_ версия": "exampleaaaaaaaaaaaaaaa"}, "_ идентификатор": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa", "ц": 1422475458}, { "событие": "спам", msg ": {" ts ": 1365109999," subject ":« Это пример сообщения веб-хоста »,« email »:« [email protected] »,« отправитель »:« [email protected] » , "метки": [ "webhook-пример"], "открывает": [{ "ц": 1365111111}], "щелчки": [{ "TS": 1365111111, "URL": "HTTP: // мандрил. ком "}]," состояние» : "Послал", "метаданные": { "user_id": 111}, "_ ID": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa1", "_ версия": "exampleaaaaaaaaaaaaaaa"}, "_ идентификатор": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa1", "ц": 1422475458}] - --- JSONDATA ---- Array
Я заметил, что $ json выводит данные json, но имеет ведущую и конечную скобки, а не начиная с squiggly bracket. Поэтому я решил назвать данные так, как если бы они были массивом, но безрезультатно.
В тесте вместо $ json = stripslashes (... Я скопировал и вставил данные json выше как литерал. После того как я удалил скобки для начала и окончания, мне удалось проанализировать некоторые данные.
может преобразовать его в строку (используя stringify), затем удалить/заменить те ведущие/конечные скобки, а затем разобрать json? В прошлом у меня была аналогичная проблема с проектом, и мне приходилось либо избегать специальных символов в моих значениях, либо изменять тип и пытаться проанализировать json. удачи с ним. – tamak
От квадратной скобки до квадратной скобки действует JSON. http://jsonlint.com 'STRIPSLASHES:' недействителен JSON, ему не хватает кавычек. –
'echo $ jsondata [0] ['msg'] ['sender'];' – PhearOfRayne