NULL Value Ответов: 1

Структурировать выбранные элементы из выпадающего списка в формат JSON?


У меня есть раскрывающийся список "компания, отдел".
Если я выберу компанию, то появится выпадающий список отделов, после выбора нескольких отделов результат покажет мне, кто принадлежит к этим отделам компании+.
Проблема в том, что мне нужно сохранить этих людей в объекте JSON для отправки обратно на сервер.

Что я уже пробовал:

departmentSelector.onchange = function() {
    persons.innerHTML = "";
    var selectedDepartments = document.querySelectorAll("[name='departmentSelector'] option:checked");

    var myObj = {};

    for (var i = 0; i < selectedDepartments.length; i++) {
        var temp3 = selectedDepartments[i].dataset.company;
        var prsonsArray = database[temp3][selectedDepartments[i].value];
        console.log(prsonsArray);
        for (var x = 0; x < prsonsArray.length; x++) {
            persons.innerHTML += "<li>" + prsonsArray[x] + "</li>";
            console.log(myObj);
        }
    }
}

Richard Deeming

Как должен выглядеть JSON и где вы застряли?

1 Ответов

Рейтинг:
0

honey the codewitch

Есть ли причина, по которой вы не просто излучаете, чтобы сказать: StringBuilder?

Обычно я просто выплевываю JSON таким образом. Это так просто, что трудно ошибиться.

Самое главное, выплевывая в JSON строку убегает, но это довольно тривиально

Это даст вам правильно экранированный строковый литерал JSON из строки C#.
Любой другой тип данных JSON, кроме "null", может быть записан с помощью ToString()

public static string ToStringLiteral(string str)
		{
			if (null == str) return "null";
			StringBuilder result = new StringBuilder();
			result.Append("\"");
			foreach (char ch in str)
			{
				switch (ch)
				{
					case '\b':
						result.Append("\\b");
						break;
					/*case '/':
						result.Append("\\/");
						break;*/
					case '\\':
						result.Append("\\\\");
						break;
					case '\t':
						result.Append("\\t");
						break;
					case '\r':
						result.Append("\\r");
						break;
					case '\n':
						result.Append("\\n");
						break;
					case '\"':
						result.Append("\\\"");
						break;
					default:
						if (char.IsControl(ch))
						{
							result.Append("\\u");
							ushort u = ch;
							result.Append(((byte)(u / 256)).ToString("x2"));
							result.Append(((byte)(u % 256)).ToString("x2"));
						}
						else
							result.Append(ch);
						break;
				}
			}
			result.Append('\"');
			return result.ToString();
		}


NULL Value

Спасибо за ваше решение.
Однако в данном случае я не использую C#. Я считал, что поставил хэштег #javascript.
myObj = Object.assign({},prsonsArray); будет использоваться в этом случае.

honey the codewitch

Ой, мне нужно еще кофе. Тем не менее, это должно быть достаточно легко портировать на javascript.

просто используя конкатенацию строк вместо stringbuilder