Storyboard StudyRightObjectModelSerialisation

How to serialize an object model to json and how to read json into an object model

Start: Example object structure:

Step 1: Serialize to json:

      
      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);