Я пытаюсь отправить небольшое количество данных в API ZenDesk. Это хорошо работает в 99% случаев, единственная проблема возникает, когда в тексте присутствует восклицательный знак.
Я использую следующее, чтобы добавить запись:
$company_name = "Company Name!";
curl_setopt($ch, CURLOPT_URL,"https://company.zendesk.com/api/v2/organizations.json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$body = '{"organization": {"name": "'.$company_name.'","domain_names": ["'.$company_url.'"]}}';
curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Connection: Keep-Alive'
));
Некоторые библиотеки, которые я тестировал для чтения и записи JSON, по-видимому, автоматически экранируют любой восклицательный знак («!») При записи в файл JSON.
Библиотеки по-прежнему могут читать восклицательный знак, даже если он не экранирован, но, похоже, они предпочитают избегать его в качестве меры предосторожности.
При поиске в Интернете я видел неподтвержденные данные о проблемах с восклицательными знаками в JSON, которые не удалось избежать. Но нет веских доказательств известной проблемы.
В случае сомнений, я бы рекомендовал всегда избегать восклицательных знаков в JSON в качестве меры предосторожности.
Других решений пока нет …