Я провел больше тестов в вашем коде, и для меня оказалось, что проблема связана не только с двойными кавычками, но и с форматом данных, полученным вашим PHP-кодом.
Итак, мы должнынаписать простой код, который исправляет входные данные PHP-файла.
Если вы отправляете эти входные данные в PHP-файл.
{ name: "Susan", title: "Director", description: ""TEST""}
, поскольку вы знаете, что это не тот формат, который может декодировать функция json_decode PHP,поэтому исправляя его, он будет выглядеть следующим образом.
{ "name": "Susan", "title": "Director", "description": "\"TEST\""}
Теперь, когда вы его декодируете, он отлично возвращает значение.
Я написал эту простую функцию для исправления данных JSON.
function fixJSON($str){
$split = explode(',', substr(trim($str), 1, -1));
$split = array_map(function($data){
$inner_split = explode(':', $data);
foreach($inner_split as $key => $value){
$modified_value = substr(trim($value), 1, -1);
if(strpos($modified_value, '"') === 0 && strrpos($modified_value, '"') === strlen($modified_value)-1){
$inner_split[$key] = '"'. addslashes($modified_value) .'"';
}elseif(strpos(trim($value), '"') !== 0 && strrpos($value, '"') !== strlen($value)-1){
$inner_split[$key] = '"'. substr($value, 1) .'"';
}
}
return implode(':', $inner_split);
}, $split);
$str = '{ ' . implode(', ', $split) . ' }';
return $str;
}
Примеры.
$str = '{ name: "Susan", title: "Director", description: ""TEST""}';
print_r(json_decode($str, true)); // returns null as you faced before.
print_r(json_decode(fixJSON($str), true)); // everything good for now.