public Entry ParseEntry(JSONNode entry)
    {
        // Create entry
        Entry entryObject = new Entry();

        entryObject.setId(entry["id"]);

        // Create target
        Target targetObject;
        var    target     = entry["target"];
        string targetType = target["type"];

        switch (targetType)
        {
        case "IMAGE_TARGET":
            ImageTarget imageTargetObject = new ImageTarget();
            imageTargetObject.setFilename(target["filename"]);
            imageTargetObject.setStorageID(target["storageID"]);
            imageTargetObject.setId(target["id"]);
            imageTargetObject.setType(Target.targetType.IMAGE_TARGET);
            targetObject = imageTargetObject;
            break;

        case "GEOLOCATION_TARGET":
            GeolocationTarget geolocationTargetObject = new GeolocationTarget();
            geolocationTargetObject.setCity(target["city"]);
            geolocationTargetObject.setContinent(target["continent"]);
            geolocationTargetObject.setCountry(target["country"]);
            geolocationTargetObject.setId(target["id"]);
            geolocationTargetObject.setLatitude(target["latitude"]);
            geolocationTargetObject.setLongitude(target["longitude"]);
            geolocationTargetObject.setPlace(target["place"]);
            geolocationTargetObject.setType(Target.targetType.GEOLOCATION_TARGET);
            targetObject = geolocationTargetObject;
            break;

        case "BRICK_TARGET":
            BrickTarget brickTargetObject = new BrickTarget();
            brickTargetObject.setId(target["id"]);
            brickTargetObject.setType(Target.targetType.BRICK_TARGET);
            targetObject = brickTargetObject;
            break;

        default:
            targetObject = new Target();
            break;
        }
        List <string> hologramsListObject = new List <string>();
        int           j          = 0;
        var           hologramID = target["holograms"][j];

        while (hologramID != null)
        {
            hologramsListObject.Add(hologramID);
            hologramID = target["holograms"][++j];
        }
        targetObject.setHolograms(hologramsListObject);
        entryObject.setTarget(targetObject);

        // Create Hologram
        Hologram hologramObject;
        var      hologram     = entry["hologram"];
        string   hologramType = hologram["type"];

        switch (hologramType)
        {
        case "IMAGE_HOLOGRAM":
            ImageHologram imageHologramObject = new ImageHologram();
            imageHologramObject.setFilename(hologram["filename"]);
            imageHologramObject.setId(hologram["id"]);
            imageHologramObject.setStorageID(hologram["storageID"]);
            imageHologramObject.setTargetID(hologram["targetID"]);
            imageHologramObject.setType(Hologram.hologramType.IMAGE_HOLOGRAM);
            imageHologramObject.setTarget(targetObject);
            hologramObject = imageHologramObject;
            break;

        case "VIDEO_HOLOGRAM":
            VideoHologram videoHologramObject = new VideoHologram();
            videoHologramObject.setFilename(hologram["filename"]);
            videoHologramObject.setId(hologram["id"]);
            videoHologramObject.setStorageID(hologram["storageID"]);
            videoHologramObject.setTargetID(hologram["targetID"]);
            videoHologramObject.setType(Hologram.hologramType.VIDEO_HOLOGRAM);
            videoHologramObject.setTarget(targetObject);
            hologramObject = videoHologramObject;
            break;

        case "ECHO_HOLOGRAM":
            EchoHologram echoHologramObject = new EchoHologram();
            echoHologramObject.setFilename(hologram["filename"]);
            echoHologramObject.setId(hologram["id"]);
            echoHologramObject.setEncodedEcho(hologram["encodedEcho"]);
            echoHologramObject.setTextureFilename(hologram["textureFilename"]);
            echoHologramObject.setTargetID(hologram["targetID"]);
            echoHologramObject.setType(Hologram.hologramType.ECHO_HOLOGRAM);
            echoHologramObject.setTarget(targetObject);
            List <string> videosListObject = new List <string>();

            j = 0;
            var videoID = hologram["vidoes"][j];
            while (videoID != null)
            {
                videosListObject.Add(videoID);
                hologramID = hologram["vidoes"][++j];
            }
            echoHologramObject.setVidoes(videosListObject);

            hologramObject = echoHologramObject;
            break;

        case "MODEL_HOLOGRAM":
            ModelHologram modelHologramObject = new ModelHologram();
            modelHologramObject.setEncodedFile(hologram["encodedFile"]);
            modelHologramObject.setFilename(hologram["filename"]);
            modelHologramObject.setId(hologram["id"]);
            modelHologramObject.setMaterialFilename(hologram["materialFilename"]);
            modelHologramObject.setMaterialStorageID(hologram["materialStorageID"]);
            modelHologramObject.setStorageID(hologram["storageID"]);
            modelHologramObject.setTargetID(hologram["targetID"]);
            var textureFilenames  = hologram["textureFilenames"].AsArray;
            var textureStorageIDs = hologram["textureStorageIDs"].AsArray;
            for (j = 0; j < textureFilenames.Count; j++)
            {
                modelHologramObject.addTexture(textureFilenames[j], textureStorageIDs[j]);
            }
            modelHologramObject.setType(Hologram.hologramType.MODEL_HOLOGRAM);
            modelHologramObject.setTarget(targetObject);
            // If applicable, update model hologram with .glb version
            if (entry["additionalData"]["glbHologramStorageID"] != null)
            {
                modelHologramObject.setFilename(entry["additionalData"]["glbHologramStorageFilename"]);
                modelHologramObject.setStorageID(entry["additionalData"]["glbHologramStorageID"]);
            }
            hologramObject = modelHologramObject;
            break;

        default:
            hologramObject = new Hologram();
            break;
        }
        entryObject.setHologram(hologramObject);

        // Create SDKs array
        bool[] sdksObject = new bool[9];
        var    sdks       = entry["sdks"].AsArray;

        for (j = 0; j < 9; j++)
        {
            sdksObject[j] = sdks[j];
        }
        entryObject.setSupportedSDKs(sdksObject);

        // Create Additional Data
        var additionalData = entry["additionalData"];

        foreach (var data in additionalData)
        {
            entryObject.addAdditionalData(data.Key, data.Value);
        }

        // Add entry to database
        dbObject.addEntry(entryObject);

        // Return
        return(entryObject);
    }