2012-06-22 9 views
2

У меня есть строка JSON, которую я хотел бы включить как значение в более крупный объект JSON, который я создаю из массива. Как я могу создать более крупный объект JSON без php-экранирования строки и без необходимости декодировать ранее закодированную строку?Кодировать данные JSON в другой объект JSON

Например, если моя JSON строка:

$encoded_already = '{"encoded_key": "encoded_value"}'; 

И я хотел бы включить его в моем массиве и json_encode() это:

$new_array = array(
    "some_other_key" => $some_value, 
    "premade_data" => $encoded_already 
); 
$output = json_encode($new_array); 

, но я хочу, чтобы иметь $encoded_already строка должна быть включена как фактическая JSON, а не только экранированная строка.

ответ

2

Вот идея: поместите токен в качестве значения атрибута, а затем используйте str_replace.

Работает только в том случае, если $token не отображается нигде в вашем JSON.

$token = '%%%'; 
$output = str_replace('"' . $token . '"', $encoded_already, json_encode(array(
    "some_other_key" => $some_value, 
    "premade_data" => $token 
)); 
+1

+1 избили меня до него. – iambriansreed

+0

upvote для великого ума, который думает одинаково :) – buley

+2

Добавлено '$ new_array ='. :) Возможно, вы захотите заменить '' %%% ''на' uniqid() '. – iambriansreed

Смежные вопросы