Sae*_*ati 11 json many-to-many client-side
考虑这种情况:
您希望以JSON格式向客户端发送一些数据,并且您不想返回服务器.数据由15名教师和100名学生组成.这些实体之间的关系是多对多的(每个学生都学习很多老师,每个老师都教许多学生).
在客户端,向用户显示学生列表.点击任何学生后,他/她的老师名单将被呈现给用户,点击老师后,将显示该老师的所有学生的名单.这导致从学生到教师和副verca的无限点击式导航.
现在,如您所知,JSON仅表示此形式中的一对多关系:
{ "s1" : [ "t1", "t2"], "s2" : [ "t2", "t4" ], "s3" : [ "t1", "t3", "t4"], ...}
Run Code Online (Sandbox Code Playgroud)
你对如何做到这一点有任何想法吗?
Ale*_*der 13
由于JSON没有引用的概念,因此您不必担心它们.定义什么算作教师和学生之间的关系的东西位于数据之外,即仅仅是在运行时通过实体的标识符解释的问题.
var faculty = {
"teachers": {
"t1": ["s1","s2","s5"],
"t2": ["s2","s7","s9"]
},
"students": {
"s1": ["t1","t2"],
"s2": ["t2","t7"]
}
}
Run Code Online (Sandbox Code Playgroud)
例如:
alert("Teacher t1's students are: " + faculty.teachers.t1.toString() );
alert("Student s2's teachers are: " + faculty.students.s2.toString() );
alert("Student s2's first teacher's students are: " + faculty.teachers[faculty.students.s2[0]].toString() );
Run Code Online (Sandbox Code Playgroud)
您可以制作成对的数组,将这些关系描述为有向图?
[// from , to
["s1", "t1"],
["s1", "t2"],
["s2", "t2"],
["s2", "t4"],
["t1", "s1"],
["t1", "s2"],
["t1", "s3"],
["t1", "s4"]
]
Run Code Online (Sandbox Code Playgroud)
不会很简洁。但这将描述您的数据集。
归档时间: |
|
查看次数: |
11251 次 |
最近记录: |