Лучший способ кодировать JSON массив, который уже имеет значение в кодировке JSON? Переполнение стека

У меня есть массив с несколькими элементами, одним из которых является уже закодированная строка JSON. Я хочу, чтобы json кодировал весь массив, но при этом он повторно json_encodes json и добавляет косые черты к нему. Единственный способ исправить это — json_decode значения, а затем кодировать весь массив. Я чувствую, что это пустая трата ресурсов, и я чувствую, что должен быть лучший путь. Делать это таким образом наилучшим образом?

Вот пример массива, который я пытаюсь json_encode.

$arr = array();
$arr["var1"] = '{"test":"test"}';
$arr["var2"] = 'foo';
$arr["var3"] = 'bar';

Если я сначала не декодирую var1 и просто кодирую весь массив, я получаю результат примерно так

{"var1":"{\"test\":\"test\"}","var2":"foo","var3":"bar"}

Обратите внимание на косые черты в объекте json.

1

Решение

json_encode() возвращает строку, содержащую json-представление значения.
В примере строка php передается как один элемент массива '{"test":"test"}'таким образом json_encode() соответственно кодирует его в формат json, с экранированными кавычками "{\"test\":\"test\"}",

Если декодирование вложенного json является очень трудоемкой задачей, обходной путь должен использовать заполнитель вместо значения, {"var1":"PLACEHOLDER","var2":"foo","var3":"bar"}, а затем с помощью str_replace() заменить его.

Однако простое декодирование, как вы описали, вероятно, является более чистым решением, если оно не требует значительных ресурсов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector