Storyboard StudyRightObjectModelSerialisation
How to serialize an object model to json and how to read json into an object model
Start: Example object structure:
JsonIdMap idMap = UniversityCreator.createIdMap("demo"); JsonArray jsonArray = idMap.toJsonArray(university); String jsonText = jsonArray.toString(3); // you might write jsonText into a file
Results in:
[{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University", "prop":{ "name":"StudyRight", "students":[ { "id":"demo.S2", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Student" } ], "rooms":[ { "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R4", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R5", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R6", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R7", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } ] } }, { "id":"demo.S2", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Student", "prop":{ "name":"Karli", "id":"4242", "university":{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University" }, "in":{ "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } } }, { "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room", "prop":{ "name":"senate", "topic":"math", "credits":17, "university":{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University" }, "doors":[ { "id":"demo.R4", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R5", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } ], "students":[ { "id":"demo.S2", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Student" } ], "assignments":[ { "id":"demo.A8", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Assignment" }, { "id":"demo.A9", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Assignment" }, { "id":"demo.A10", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Assignment" } ] } }, { "id":"demo.R4", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room", "prop":{ "name":"7522", "topic":"arts", "credits":16, "university":{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University" }, "doors":[ { "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R5", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R6", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R7", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } ] } }, { "id":"demo.R5", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room", "prop":{ "name":"gymnasium", "topic":"sports", "credits":25, "university":{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University" }, "doors":[ { "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R4", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R6", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } ] } }, { "id":"demo.R6", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room", "prop":{ "name":"The End", "topic":"exam", "university":{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University" }, "doors":[ { "id":"demo.R5", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R4", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R7", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } ] } }, { "id":"demo.R7", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room", "prop":{ "name":"7422", "topic":"Software Engineering", "credits":42, "university":{ "id":"demo.U1", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.University" }, "doors":[ { "id":"demo.R4", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" }, { "id":"demo.R6", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } ] } }, { "id":"demo.A8", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Assignment", "prop":{ "content":"Matrix Multiplication", "points":5, "room":{ "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } } }, { "id":"demo.A9", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Assignment", "prop":{ "content":"Series", "points":6, "room":{ "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } } }, { "id":"demo.A10", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Assignment", "prop":{ "content":"Integrals", "points":8, "room":{ "id":"demo.R3", "class":"org.sdmlib.test.examples.studyrightWithAssignments.model.Room" } } }]
Step 2: Now read it back again
// read jsonText from file JsonArray readJsonArray = new JsonArray().withValue(jsonText); JsonIdMap readerMap = UniversityCreator.createIdMap("demo"); Object rootObject = readerMap.decode(readJsonArray);