Многие ко многим отношения в 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() );