@Override
    public List<AllocatedGroupRange> deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException {
        final List<AllocatedGroupRange> groupRanges = new ArrayList<>();
        try {
            if(json.isJsonArray()) {
                final JsonArray jsonObject = json.getAsJsonArray();
                for (int i = 0; i < jsonObject.size(); i++) {
                    final JsonObject unicastRangeJson = jsonObject.get(i).getAsJsonObject();
                    final int lowAddress = unicastRangeJson.get("lowAddress").getAsInt();
                    final int highAddress = unicastRangeJson.get("highAddress").getAsInt();
                    groupRanges.add(new AllocatedGroupRange(lowAddress, highAddress));
                }
            }
        } catch (Exception ex) {
            MeshLogger.error(TAG, "Error while de-serializing Allocated group range: " + ex.getMessage());
        }
        return groupRanges;
    }
Migrator class to migrate allocated group range data
mesh/src/main/java/no/nordicsemi/android/mesh/utils/AllocatedGroupRangeDbMigrator.java