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

zey_ser

Новичок
Есть строка типа
Код:
"{\"cost\":14}"
, которая валидная по RFC 7159. Но как ее правильно преобразовывать при помощи php в тот-же массив? Два раза json_decode прогонять?
Код:
json_decode(json_decode('"{\"cost\":14}"'), true);
 
Вроде и одного раза хватает, специально попробовал. В любом случае дважды вызвать json_decode как-то неправильно и скорее всего бессмысленно, если хочется самому убрать слеши то можно использовать сначала stripslashes.
 
Вроде и одного раза хватает, специально попробовал. В любом случае дважды вызвать json_decode как-то неправильно и скорее всего бессмысленно, если хочется самому убрать слеши то можно использовать сначала stripslashes.
Чем слеши в JSON мешают?
 
Подождите, у меня после первого json_decode получается что-то по типу {"cost":14}. И этот я уже могу преобразовать в массив, объект. Может от каких-то настроек зависит как строка будет преобразована?
 
Я думаю, ключевая фраза здесь
которая валидная по RFC 7159.
Ты определись, что у тебя закодировано. Если объект, то ни разу не валидная. Если тупо строка, то не хоти из нее объект.
Все просто.

В общем, вместо изобретения очередных костылей, как всегда надо посмотреть на источник данных. И настучать ему по голове
 
Я жду строку в json. И все методы отдают json к которому я привык)) В этом случае, если я Вас понял правильно, на той стороне разраб прогнал 2 раза через json_encode. Правильно?
 
@Фанат, может и туплю, но мне кажется стандарт тут не причем, просто кто-то экранирование применил к JSON.
 
Ну так тебе твое API возвращает невалидный объект.
Требуйте валидности объектов после отстоя пены
 
Ну так тебе твое API возвращает невалидный объект.
Требуйте валидности объектов после отстоя пены
Спасибо! Просто на той стороне человек добавил нлвый метод. Когда я ему написал, что что-то не так с ответом, он не ответил. И тут я засомнеыался...)))
 
угу, но кто-то на сервере еще делает, что-то вроде addslashes($json) ...
нет, тут именно двойной json encode, обрати внимание на обрамляющие кавычки

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