JSON:是否可以拥有一个具有多个值的键?

时间:2016-01-13 03:28:06

标签: jquery arrays angularjs json filter

< ---- ----声明> 我想提供许多细节以保证安全,如果您不需要背景故事,请随时跳过问题。

< ----- ----背景故事>

我正在开发一个触摸屏目录,显示我中心的所有员工。目录分为几个部门(管理,销售,标准等)当我们开始为目录构建JSON文件时,我们按部门分解它们,因此我们有一个management.json文件,sales.json等等。我们即将完成该目录的1.0版本并部署它,但是现在我们已经构建了所有JSON文件,我们看到有一个小问题。许多员工都属于多个类别,当我们将所有JSON文件分开时,这不是一个大问题,因为我们可以拥有并输入" Mark Jones"在sales.json和management.json中并没有冲突。然而,有人建议并且正确地说,能够根据某些标准(最好的教师,认证评估员等)过滤员工会很棒。没有一个JSON文件,我无法看到如何做到这一点。

< ---- ----问题>

我们希望将所有员工都放在一个JSON文件中,并能够使用AngularJS对其进行过滤。这让我想到了我的问题,我可以将两个值(或者更多我认为)附加到一个键上吗?如下:

< ----当前结构----->
(management.json)

[{
    "fName": "Tom",
    "lName": "Jones",
    "bobAward": "false",
    "department": "management"
}, {
    "fName": "Bill",
    "lName": "Hunter",
    "bobAward": "true",
    "department": "management"
}]

(sales.json)

[{
    "fName": "Tom",
    "lName": "Jones",
    "bobAward": "false",
    "department": "sales"
}, {
    "fName": "Steve",
    "lName": "Webb",
    "bobAward": "true",
    "department": "sales"
}]

< ----建议文件---->
(employees.json)

[{
    "fName": "Tom",
    "lName": "Jones",
    "bobAward": "false",
    "department": "management sales"
}, {
    "fName": "Bill",
    "lName": "Hunter",
    "bobAward": "true",
    "department": "management"
}, {
    "fName": "Steve",
    "lName": "Webb",
    "bobAward": "true",
    "department": "sales"
}]

我希望能够过滤部门==销售并让Tom和Steve出现,并过滤部门==管理层并让汤姆和比尔出现。如果您需要更多信息或者有更简单的方法可以让我知道,我完全迷失了:)

注意:我们无法访问任何服务器,因此任何服务器依赖语言都不在我们面前。

2 个答案:

答案 0 :(得分:2)

无论您做什么,每位员工都需要一个唯一的整数ID。否则,你迟早会雇用第二个约翰史密斯,并学习有关唯一标识符的艰难方法。如果你的数据库人员在这一点上制造了一个真正的障碍(我从你关于访问服务器的评论中推断出一些组织功能障碍),我不确定该推荐什么。但在这种情况下,下面的选项1可能会更好。

选项#1:

"department": ["sales", "management"],

选项#2:

将部门放在第二个“表”中(比喻说);这是数据库101.使用您的员工ID号来指定成员资格。如果根本没有办法为员工建立正确的唯一标识符,那么这是不可能的。

"departments": [
    {
        "name": "sales",
        "members": [ 2, 12, 13 ]
    },
]

答案 1 :(得分:1)

我根据你的实际需要改进了我的答案:
http://www.jsoneditoronline.org/?id=24b116863b78d086722b52be21a83221

这代表JSON格式,如:

[{
  "fName": "Tom",
  "lName": "Jones",
  "departments": {
    "sales": null,
    "management": {"joined-date":"2014-06-01T00:00:00", "position":"Senior Manager"},
    "management sales": null
  }
}]

基本上,所有对象节点都是用大括号{" x":" y"和方括号中的数组[" x"," y" ],所有递归。

然后在此处验证您的JSON:jsonformatter