WebHook извлекает значения из массива [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Гость
 WebHook извлекает значения из массива [закрыто]

Сообщение Гость »

Повторяю этот вопрос...
В приложении под названием Zapier я отправляю некоторые данные через POST в созданный мною PHP WebHook.
Я проверил соединение с WebHook, и оно хорошее.
В моем WebHook я использую приведенное ниже соединение для получения данных, передаваемых из Zap:

Код: Выделить всё

$payload = json_decode(file_get_contents("php://input"), true);
echo "payload: ";
print_r($payload);
Я вижу распечатанные данные в своем Zap. Выглядит это так:

Код: Выделить всё

payload:
Array (
[campaign] =>
[
{'id': 1234, 'campaign_name': 'my campaign name',
'campaign_type': 'Single Content',
'action_type': 'Email', 'topic': 'no topic',
'country_target': 'US', 'created_at': 1702301345043,
'modified_by': 'myemail@yahoo.com',
'isactive': True, 'ispublish': True,
'user_id': 123, 'modified_at': 1719412676636
}
]
)
Вернувшись к своему WebHook, я попытался извлечь некоторые значения следующим образом:

Код: Выделить всё

$id = isset($payload['id']) ? $payload['id'] : '';
$email = isset($payload['modified_by']) ? $payload['modified_by'] : '';
$campaignName = isset($payload['campaign_name']) ? $payload['campaign_name'] : '';
Затем я пытаюсь распечатать переменные следующим образом:

Код: Выделить всё

echo "id: " . $id;
echo "email: " . $email;
echo "campaign name: " . $campaignName;
Но ничего не распечатывается.
Как правильно извлечь значения из массива и установить переменную?
РЕДАКТИРОВАТЬ
В Zap я убедился, что тип полезной нагрузки установлен на JSON, а затем использовал приведенное ниже в своем WebHook: р>

Код: Выделить всё

$payload = file_get_contents("php://input");
Затем распечатывается так:

Код: Выделить всё

var_dump($payload);
Вот результаты:

Код: Выделить всё

string(377) "{"campaign": "[{'id': 1234, 'campaign_name': 'my campaign name',
'campaign_type': 'Single Content', 'action_type': 'Email', 'topic': 'no topic',
'country_target': 'US', 'created_at': 1702301345043, 'modified_by': 'myemail@yahoo.com',
'isactive': True, 'ispublish': True, 'user_id': 123, 'modified_at': 1719412676636}]"}"
РЕДАКТИРОВАНИЕ
Обновил свой PHP-код следующим образом:

Код: Выделить всё

$payload = json_decode(file_get_contents("php://input"), true);

$fixedPayload = str_replace("'", '"', $payload);
$jsonData = json_decode($fixedPayload, true);
if (json_last_error() === JSON_ERROR_NONE) {
echo "made it here";
} else {
error_log('Invalid JSON payload: ' . json_last_error_msg());
}
Теперь, когда я распечатываю результаты, я вижу следующее:

Код: Выделить всё

made it here
{"campaign":"[{\"id\": 1234, \"campaign_name\": \"my campaign name\",
\"campaign_type\": \"Single Content\",
\"action_type\": \"Email\", \"topic\": \"No Topic\",
\"country_target\": \"US\", \"created_at\": 1702301345043,
\"modified_by\": \"myemail@yahoo.com\", \"isactive\": True,
\"ispublish\": True, \"user_id\": 123, \"modified_at\": 1719412676636}]"}
Как видите, мне удалось удалить одинарные кавычки и добавить двойные.
Теперь я просто пытаюсь понять, как чтобы установить каждое значение в свою собственную переменную. Я думаю, это недостающая часть.

Подробнее здесь: https://stackoverflow.com/questions/793 ... from-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»