Многие ко многим отношениям в JSON
рассмотрим такой сценарий:
вы хотите отправить некоторые данные клиенту в формате JSON, и вы не хотите вернуться на сервер. Данные состоят из 15 преподавателей со 100 студентами. Отношения между этими сущностями много ко многим (каждый ученик учится у многих учителей, и каждый учитель учит многих учеников).
в клиенте пользователю предоставляется список студентов. По щелчку любого студента, список его / ее учителей будет представлен пользователь, и по щелчку учителя, будет представлен список всех студентов этого учителя. Это приводит к бесконечной навигации по стилю щелчка от студентов до учителей и вице-Верки.
теперь, как вы знаете, JSON представляет только отношение "один ко многим"в этой форме:
{ "s1" : [ "t1", "t2"], "s2" : [ "t2", "t4" ], "s3" : [ "t1", "t3", "t4"], ...}
у вас есть идеи, как это сделать?
2 ответов
поскольку JSON не имеет понятия ссылок, вам не нужно беспокоиться о них. То, что определяет, что считается отношением между преподавателями и студентами, лежит вне данных, т. е. просто вопрос вашей интерпретации во время выполнения, через идентификаторы сущностей.
var faculty = {
"teachers": {
"t1": ["s1","s2","s5"],
"t2": ["s2","s7","s9"]
},
"students": {
"s1": ["t1","t2"],
"s2": ["t2","t7"]
}
}
например:
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() );
вы можете сделать массив пар, описывающих отношения как направленный граф?
[// from , to
["s1", "t1"],
["s1", "t2"],
["s2", "t2"],
["s2", "t4"],
["t1", "s1"],
["t1", "s2"],
["t1", "s3"],
["t1", "s4"]
]
это не было бы кратким. Но он будет описывать ваш набор данных.