【发布时间】:2014-05-15 15:33:58
【问题描述】:
过去我用 JSON 做了大量工作,但我从来不需要编写自己的 JSON 对象。现在我的任务是这样做,我在创建它时遇到了一些麻烦,这种方式会给我带来最少的麻烦。基本上,我想第一次就做好。
我的 JSON 数组最终会变大,但出于这些目的,我会保持较小。
这是我目前所做的:
{
"ClassGroup": [
{
"id": "123",
"classname": "Class 1",
"isActive": "true",
"isExpanded": "false",
"students": [11, 22, 33, 44, 55],
"isSelected": [11, 22, 33, 44, 55]
},
{
"id": "456",
"classname": "Class 2",
"isActive": "false",
"isExpanded": "false",
"students": [66, 77, 88, 99],
"isSelected": [66, 88, 99]
}
],
"Student": [
{
"id": "11",
"first": "Student",
"last": "One",
"classes": [123],
"isSelected": [123]
},
{
"id": "22",
"first": "Student",
"last": "Two",
"classes": [123],
"isSelected": [123]
}
]
}
目前数组中缺少很多学生和班级,因此请忽略您看到的任何缺少的 ID。
以这种方式运行并运行jQuery.getJSON 函数时,我最终会得到一个这样的数组:
data['ClassGroup'][0]['id'] 将等于“123” data['ClassGroup'][1]['id'] 将等于“456” data['Student'][0]['id'] 将等于“11”
这样做的问题是,当给定一个类的 ID 时,我无法轻松找到该类。例如,如果我想找到类“456”的名称,我将不得不遍历数组直到找到X,这样data['ClassGroup'][X]['id'] 将等于“456”,而不是仅仅执行data['ClassGroup']['456']['classname']。
我想做的是重新编写这个 JSON,这样$.getJSON 的结果将与以下内容一致:
数据['ClassGroup']['123']['classname'] = "Class 1" 数据['ClassGroup']['456']['classname'] = "Class 2" 数据['学生']['11']['last'] = "一个"
我想你明白了。
我这样做对吗?
【问题讨论】:
-
您的服务器端代码是什么语言?你能改变你得到这个 JSON 的方式吗?我有一个 JSON.NET ArrToObjConverter,您可以将某些数组的对象属性假定为对象属性,并且您的 JSON 将返回如下内容:“ClassGroup”:{“123”:{“classname”:“Class 1”,“isActive” :“真”、“isExpanded”:“假”、“学生”:[11、22、33、44、55]、“isSelected”:[11、22、33、44、55]}、“456”: { "classname": "Class 2", "isActive": "false", (...) } }
-
我们正在与一家公司合作开展这个项目。我们正在做前端工作,而他们将做银行端(我相信使用 ASP 和 MsSQL)。我们可以随心所欲地制作这个 JSON 数组,而另一家公司将编写一个后端脚本,该脚本将生成一个以这种格式填充数据的文件。
标签: javascript jquery json multidimensional-array