
27.02.2020, 18:17
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Сохранение объекта в строку
Добрый день. Есть некий объект 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]
Соответственно, получается ошибка, из-за неправильного парсинга шорткода. Есть ещё какие-нибудь варианты?
|
|

27.02.2020, 18:28
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Так, чтобы потом было возможно снова распарсить строку в объект
|
|

27.02.2020, 18:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Янковиц
|
Так, чтобы потом было возможно снова распарсить строку в объект
|
JSON.stringify(vals)
Сообщение от Янковиц
|
получается ошибка, из-за неправильного парсинга шорткода
|
str.replace('"','')
|
|

27.02.2020, 18:50
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Не получается обратно спарсить
Вот строка: {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
|
|

27.02.2020, 19:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Янковиц
|
Не получается обратно спарсить
|
Вам для чего нужна строка без кавычек? Вот для того, чему нужна и удаляйте их, и если json нужен далее еще для чего-то, то его то зачем терзать?
|
|

27.02.2020, 20:12
|
 |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,760
|
|
Ну если они однотипные, то можно свои преобразователи написать.
|
|

28.02.2020, 16:37
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,802
|
|
Сообщение от Янковиц
|
Не получается обратно спарсить
Вот строка: {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
|
Ваша строка - невалидный json.
Так не пробовали?
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));
|
|

28.02.2020, 18:26
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Сделал как сказал voraa, преобразовал кавычки в другие символы, а потом обратно конвертировал
|
|

28.02.2020, 18:45
|
 |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,760
|
|
Сообщение от Янковиц
|
Сделал как сказал voraa, преобразовал кавычки в другие символы, а потом обратно конвертировал
|
Я этого не говорил.
Я не люблю str.replace('"','') вернее str.replace(/"/g,'')
Сам нарывался на ошибки в строках типа
" Это очень \"хитрая\" строка"
|
|

28.02.2020, 22:12
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Если этот ваш шорткод понимает экранирование, то можно просто дважды экранировать:
JSON.stringify(JSON.stringify(vals))
Вообще если я правильно понимаю что такое шорткод, то каким образом вообще туда попадает что-то из javascript? Ручками?
__________________
29375, 35
Последний раз редактировалось Aetae, 28.02.2020 в 22:14.
|
|
|
|