json_encode добавление нежелательных слешей - PullRequest
9 голосов
/ 11 марта 2010

У меня есть строка json, сохраненная в моей базе данных. Когда я получаю его из базы данных, чтобы передать его в функцию javascript (вызов ajax) вместе с идентификатором этой строки, я выполняю json_encoding (массив результатов запроса) и передаю его в js. но json_encode добавляет нежелательные косые черты к моей уже json-строке. как избежать этого. помните, что я должен передать идентификатор также как второй элемент в массиве.

моя строка JSON в БД выглядит так:

{"field":"City","term":"Hawaiian Gardens, CA"}

и идентификатор скажет 5.

поэтому массив результатов запроса в PHP:

$savedVal['id'] = 5 
$savedVal['object_str'] = {"field":"City","term":"Hawaiian Gardens, CA"}

поэтому после json_encode ($ saveVal) в идеале это должно быть:

{"id":"5","object_str":{"field":"City","term":"Hawaiian Gardens, CA"}}

но json_encoding для массива дает мне:

{"id":"5","object_str":"{\"field\":\"City\",\"term\":\"Hawaiian Gardens, CA\"}}

дополнительные косые черты и кавычки вокруг значения object_str. Пожалуйста, помогите мне.

Спасибо.

1 Ответ

19 голосов
/ 11 марта 2010

Вы запускаете JSON_encode в JSON - вот почему происходит двойное экранирование.Попробуйте это:

$savedVal['id'] = 5 ;
$savedVal['object_str'] = json_decode( '{"field":"City","term":"Hawaiian Gardens, CA"}' );

echo json_encode( $savedVal );

Вывод

{"id":5,"object_str":{"field":"City","term":"Hawaiian Gardens, CA"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...