将所选项目从下拉列表结构化为JSON格式? [英] Structure selected items from dropdownlist to JSON format?

查看:80
本文介绍了将所选项目从下拉列表结构化为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);
}
}
}

解决方案

你有什么理由吗?不只是说,一个 StringBuilder



我通常只是吐出JSON。这很简单,很难弄错。



最大的问题是吐出json字符串逃逸,但这非常简单



这将从C#字符串中为您提供正确转义的JSON字符串文字。

除null之外的所有其他JSON数据类型都可以用 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( \\\\);
break ;
case ' \ n'
result.Append( \\ n);
break ;
case ' \'
result.Append( \\\ );
休息;
默认值:
if(char.IsControl(ch))
{
result.Append(
\\\\ );
ushort u = ch;
result.Append(((byte)(u / 256))。ToString(
x2 ));
result.Append(((byte)(u%256))。ToString(
x2 ));
}
其他
result.Append(ch);
休息;
}
}
result.Append('\');
返回result.ToString();
}


I have a company, department drop-down list.
If I select a company, then department dropdown appears, after select multiple departments, the result show me who are belong to those company + departments.
The problem is I need to store those people in a JSON object to send back to a server.

What I have tried:

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);
        }
    }
}

解决方案

Is there a reason you're not just emitting to say, a StringBuilder?

I usually just spit out JSON that way. It's so simple it's hard to get it wrong.

The biggest thing is spitting out json string escapes but that's pretty trivial

This will give you a properly escaped JSON string literal from a C# string.
Every other JSON datatype except "null" can be written out with 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();
		}


这篇关于将所选项目从下拉列表结构化为JSON格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆