Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 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]

Соответственно, получается ошибка, из-за неправильного парсинга шорткода. Есть ещё какие-нибудь варианты?
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2020, 18:28
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Так, чтобы потом было возможно снова распарсить строку в объект
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2020, 18:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Янковиц
Так, чтобы потом было возможно снова распарсить строку в объект
JSON.stringify(vals)

Сообщение от Янковиц
получается ошибка, из-за неправильного парсинга шорткода
str.replace('"','')
Ответить с цитированием
  #4 (permalink)  
Старый 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
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2020, 19:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Янковиц
Не получается обратно спарсить
Вам для чего нужна строка без кавычек? Вот для того, чему нужна и удаляйте их, и если json нужен далее еще для чего-то, то его то зачем терзать?
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2020, 20:12
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

Ну если они однотипные, то можно свои преобразователи написать.
Ответить с цитированием
  #7 (permalink)  
Старый 28.02.2020, 16:37
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

Сообщение от Янковиц
Не получается обратно спарсить

Вот строка: {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));
Ответить с цитированием
  #8 (permalink)  
Старый 28.02.2020, 18:26
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Сделал как сказал voraa, преобразовал кавычки в другие символы, а потом обратно конвертировал
Ответить с цитированием
  #9 (permalink)  
Старый 28.02.2020, 18:45
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

Сообщение от Янковиц Посмотреть сообщение
Сделал как сказал voraa, преобразовал кавычки в другие символы, а потом обратно конвертировал
Я этого не говорил.
Я не люблю str.replace('"','') вернее str.replace(/"/g,'')
Сам нарывался на ошибки в строках типа
" Это очень \"хитрая\" строка"
Ответить с цитированием
  #10 (permalink)  
Старый 28.02.2020, 22:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Если этот ваш шорткод понимает экранирование, то можно просто дважды экранировать:
JSON.stringify(JSON.stringify(vals))


Вообще если я правильно понимаю что такое шорткод, то каким образом вообще туда попадает что-то из javascript? Ручками?
__________________
29375, 35

Последний раз редактировалось Aetae, 28.02.2020 в 22:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение объекта axelist Events/DOM/Window 1 22.05.2015 17:00
Преобразование объекта в URL строку Hapson Общие вопросы Javascript 5 23.03.2014 11:44
Скрипт вычисления координат объекта banderasantonio197555 Events/DOM/Window 4 16.08.2011 17:37
Сохранение объекта в строку micscr Общие вопросы Javascript 5 01.05.2010 13:29
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00