Sergey1986,
ищите причину ошибки, вы же не руками на сервере готовите json, может в исходных данных бардак, а потому и результат таков. Вот ваши данные и проблем не будет:
<?
if($_POST) {
$a = (object)[
['id'=>1, 'name'=> 'ООО "Газпром"'], //пусть это имя в двойных кавычках
['id'=>2, 'name'=> "ООО 'Шел'"] //пусть это имя в одинарных кавычках
];
exit(json_encode($a, JSON_UNESCAPED_UNICODE));
}
?>
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$.post(location, {p:1}, function(d) {
try {
d = JSON.parse(d);
alert(d[0].name+'\n'+d[1].name)
} catch (e) {
alert(e)
}
})
</script>
</head>
</html>
А вы не выясняя причин, хотите методом научного тыка выкрутиться.