drno-reg
@drno-reg
см не кратко

Как скорректировать JSON?

Здравствуйте.

на форме есть таблица, в которой в элементах TD содержатся INPUT для ввода значений коэффициентов

есть функция подготовки JSON по данным элементов формы
function Employee(Employee, map_list) {
        this.Employee = Employee;
        this.map_list = map_list;
    }       
	   function check_Employee(){
	   var map_list1=[];
	   [].forEach.call(document.getElementsByTagName("input"), function (elements_form) {
            if (([elements_form.getAttribute('id')].toString()).indexOf("Input_Weight")!=-1) {
                    if(([elements_form.getAttribute('id')].toString()).indexOf("1")!=-1){
                        map_list1.push(elements_form.getAttribute('id'),document.getElementById(elements_form.getAttribute('id')).value);
                    }
            }
        });
		var arrayList=[];
		            var employeeObject = new Employee(table.rows[2].cells[0].innerHTML, map_list1);
            arrayList.push(employeeObject);
			arrayList.push(employeeObject);		
			console.log(JSON.stringify(arrayList));
			}


на текущий момент в результате получается JSON такого вида

[{"Employee":"сотрудник1","map_list":
                          ["Input_Weight_11","0.3","Input_Weight_12","0.6","Input_Weight_13","0.2"]},
			{"Employee":"сотрудник2","map_list":
                          ["Input_Weight_21","0","Input_Weight_22","0","Input_Weight_23","0"]},
			{"Employee":"сотрудник3","map_list":
                          ["Input_Weight_31","0","Input_Weight_32","0","Input_Weight_33","0"]}]


Как сделать так, чтобы результат изменился на: в коллекции map_list наименование и его значение были разделены :

[{"Employee":"сотрудник1","map_list":                
["Input_Weight_11":"0.3","Input_Weight_12":"0.6","Input_Weight_13":"0.2"]},
{"Employee":"сотрудник2","map_list":
["Input_Weight_21":"0","Input_Weight_22":"0","Input_Weight_23":"0"]},
{"Employee":"сотрудник3","map_list":
["Input_Weight_31":"0","Input_Weight_32":"0","Input_Weight_33":"0"]}]
  • Вопрос задан
  • 122 просмотра
Решения вопроса 2
@n-fom
[{"Employee":"сотрудник1","map_list":
["Input_Weight_11":"0.3","Input_Weight_12":"0.6","Input_Weight_13":"0.2"]},
{"Employee":"сотрудник2","map_list":
["Input_Weight_21":"0","Input_Weight_22":"0","Input_Weight_23":"0"]},
{"Employee":"сотрудник3","map_list":
["Input_Weight_31":"0","Input_Weight_32":"0","Input_Weight_33":"0"]}]

Это не валидный json, для начала скорректируйте например https://jsonlint.com/
Так же не забывайте про https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
drno-reg
@drno-reg Автор вопроса
см не кратко
с учетом особенностей размещения элементов на форме, решение будет таким

function check_Employee(){
        var table = document.getElementById('Employees');
        var arrayList = [];
             for (var i = 1; i < table.rows.length-2; i++) {
                 var map_list = {};
                 [].forEach.call(document.getElementsByTagName("input"), function (elements_form) {
                     if (([elements_form.getAttribute('id')].toString()).indexOf("Input_Weight_"+i) != -1) {                      
                             map_list[elements_form.getAttribute('id')] = document.getElementById(elements_form.getAttribute('id')).value;                      
                     }
                 });
                 var employeeObject = new Employee(table.rows[i+1].cells[0].innerHTML, map_list);
                 arrayList.push(employeeObject);
    }
        console.log(JSON.stringify(arrayList));
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы