Сохранение объекта в строку
Добрый день. Есть некий объект vals, который содержит ключи и значения.
Как преобразовать его в строку? Если использую JSON.stringify(vals), объект получается с кавычками. Потом он используется в шорткоде: [chart type="line" values="{"name":"День","stroke":"#bd0f0f","val ues":["100","200","400","350","620","50","50","400","800 ","700","650","500","123"]}"][/chart] Соответственно, получается ошибка, из-за неправильного парсинга шорткода. Есть ещё какие-нибудь варианты? |
Так, чтобы потом было возможно снова распарсить строку в объект
|
Цитата:
Цитата:
|
Не получается обратно спарсить
Вот строка: {name:День,stroke:#099e1b,values:{0:100,1:200, 2:400,3:350,4:620,5:50,6:50,7:400,8:800,9:700,10:6 50,11:500,12:123}} Делаю через JSON.parse |
Цитата:
|
Ну если они однотипные, то можно свои преобразователи написать.
|
Цитата:
Так не пробовали? const serialize = obj => encodeURIComponent(JSON.stringify(obj)); const unserialize = serializedString => JSON.parse(decodeURIComponent(serializedString)); const object = { foo: 'bar' }; const serializedObject = serialize(object); console.log(`[chart values="${serializedObject}"][/chart]`); console.log(unserialize(serializedObject)); |
Сделал как сказал voraa, преобразовал кавычки в другие символы, а потом обратно конвертировал
|
Цитата:
Я не люблю str.replace('"','') вернее str.replace(/"/g,'') Сам нарывался на ошибки в строках типа " Это очень \"хитрая\" строка" |
Если этот ваш шорткод понимает экранирование, то можно просто дважды экранировать:
JSON.stringify(JSON.stringify(vals)) Вообще если я правильно понимаю что такое шорткод, то каким образом вообще туда попадает что-то из javascript? Ручками? |
Часовой пояс GMT +3, время: 17:34. |