Что правильнее - object или ручная запаковка или еще что-то?
Добрый день,
о себе - нуб в ЖС, но имею большой опыт в С/С++ особенно в суперкомпьютинге. Что мне сейчас надо. Пишу веб морду, которая общается с высокопроизводительным софтвером на линукс кластере. В морде есть много - около сотни параметров и таблиц, часто представляющие собой таблицы переменной длины. Мне надо эту конфигурацию передать в софтвер, иногда надо из софтвера прочитать все эти параметры. Вижу два варианта: 1. засовываю все эти структуры в object, далее все очевидно, при передаче вызываю JSON.stringify, а когда получаю с софтвера данные - вызываю JSON.parse. 2. переменные и массивы все как есть живут обычным образом, а когда я их посылаю, то в ручную сам их все пакую. В обратную сторону - все также. Данных для запаковки примерно от 10КБайт до 1МБайт. Надобно не часто, но хочется, чтобы это "летало" на любом ведроиде в том числе и прошлого столетия. Как правильнее, пожалуйста, посоветуйте! Спасибо! |
JSON. Движки заточены под это, нагрузка минимальна. Собственный паковщик может и выиграет в объёме передаваемых данных, но проиграет в нагрузке и, само собой, поддержке.
|
Спасибо большое за ответ!
Я наверное неправильно вопрос сформулировал, простите меня, пожалуйста. То, что передавать буду JSONом - это однозначно. А вот как мне эти переменные и массивы внутри самой морды хранить и адрессировать? Вот пример: у меня есть около 20 полей <input type="text" id="data_name" size=6"> с разными именами data_name, а также с десяток массивов, длины которых определяются заполнением таких input и того, что в них содержится (я эти формы в ЖС на лету генерю). То есть программа, которая это все обрабатывает - тоже моя, я могу вход JSON парсить как мне захочется. Правильно ли я понимаю, что мне надо все мои данные из input сразу воткнуть в какой-то object, и протаскивать данные просто запаковывая весь этот object в JSON строку, или есть какой-то более элегантный способ? Спасибо! |
А что тут не элегантного?
let array1 = [...]; .... let arrayM =[....]; let obj = {}; obj.data_name1 = document.getElementById('data_name1').value; ... obj.data_nameN = document.getElementById('data_nameN').value; obj.array1 = array1; ... obj.arrayM = arrayM; let sjson = JSON.stringify(obj) |
Цитата:
|
Простое решение - использовать какие либо библиотеки с data binding, которые напрямую тебе свяжут json структуру с input'ами, освобождая от ручной работы. Например Vue.
|
Спасибо большое за советы!!!
Да, я понимаю, что то, что предлагает voraa - достаточно просто и надежно. Я просто имел ввиду, что можно как-то в <input type="text" id="obj.data_name" size=6"> сразу в obj.data_name написать имя и поле объекта, но, повидимому, это реализуемо только, как Aetae посоветовал, через Vue... Все, разобрался что да как, огромное-преогромное всем участвовавшим и советовавшим СПАСИБО!!! |
И тащить Vue вместо пяти строк?
document.querySelectorAll('input[type=text]').forEach(el => { el.addEventListener('input', (ev) => { obj[ev.target.id] = ev.target.value }) }) |
voraa,
:-? document.querySelectorAll('input[type=text]').forEach(el => { el.addEventListener('input', _ => obj[el.id] = el.value) }) |
voraa, рони, ну так тут обратной связи от изменения объекта не будет. И эти "пять" строк придётся повторять из раза в раз меняя в зависимости от структуры. А попытки универсализации выльются в итоге в написание своей мини-либы, что всяко будет хуже уже имеющихся.)
Тащить же Vue необязательно, полно data-binding либ по проще, в том числе и от местных ребят. Но честно говоря брать сейчас vue для меня как брать раньше jquery: подключил и фигач, не парь мозги и не трать время на велосипеды. |
Часовой пояс GMT +3, время: 16:30. |