[Решено]Как правильно делать json decode?

zey_ser

Новичок
Есть строка типа
Код:
"{\"cost\":14}"
, которая валидная по RFC 7159. Но как ее правильно преобразовывать при помощи php в тот-же массив? Два раза json_decode прогонять?
Код:
json_decode(json_decode('"{\"cost\":14}"'), true);
 

scorpion-ds

Новичок
Вроде и одного раза хватает, специально попробовал. В любом случае дважды вызвать json_decode как-то неправильно и скорее всего бессмысленно, если хочется самому убрать слеши то можно использовать сначала stripslashes.
 

Kotofey

FloodMaster.
Вроде и одного раза хватает, специально попробовал. В любом случае дважды вызвать json_decode как-то неправильно и скорее всего бессмысленно, если хочется самому убрать слеши то можно использовать сначала stripslashes.
Чем слеши в JSON мешают?
 

zey_ser

Новичок
Подождите, у меня после первого json_decode получается что-то по типу {"cost":14}. И этот я уже могу преобразовать в массив, объект. Может от каких-то настроек зависит как строка будет преобразована?
 

Фанат

oncle terrible
Команда форума
Я думаю, ключевая фраза здесь
которая валидная по RFC 7159.
Ты определись, что у тебя закодировано. Если объект, то ни разу не валидная. Если тупо строка, то не хоти из нее объект.
Все просто.

В общем, вместо изобретения очередных костылей, как всегда надо посмотреть на источник данных. И настучать ему по голове
 

zey_ser

Новичок
Я жду строку в json. И все методы отдают json к которому я привык)) В этом случае, если я Вас понял правильно, на той стороне разраб прогнал 2 раза через json_encode. Правильно?
 

scorpion-ds

Новичок
@Фанат, может и туплю, но мне кажется стандарт тут не причем, просто кто-то экранирование применил к JSON.
 

Фанат

oncle terrible
Команда форума
Ну так тебе твое API возвращает невалидный объект.
Требуйте валидности объектов после отстоя пены
 

zey_ser

Новичок
Ну так тебе твое API возвращает невалидный объект.
Требуйте валидности объектов после отстоя пены
Спасибо! Просто на той стороне человек добавил нлвый метод. Когда я ему написал, что что-то не так с ответом, он не ответил. И тут я засомнеыался...)))
 

fixxxer

К.О.
Партнер клуба
угу, но кто-то на сервере еще делает, что-то вроде addslashes($json) ...
нет, тут именно двойной json encode, обрати внимание на обрамляющие кавычки

про экранирование я в том же смысле, в каком escape:js в tempale engines реализуется как return json_encode.
 
Сверху