@Override
 public Object deserialize(HbaseCell element, TypeMetadata<HbaseCell> typeMetadata) {
   String jsonString = Bytes.toString(element.getValue());
   JsonParser parser = new JsonParser();
   JsonElement jsonElement = parser.parse(jsonString);
   TypeMetadata<JsonElement> jsonTypeMetadata =
       new TypeMetadataImpl(
           typeMetadata,
           ReflectionUtil.getFieldByName(typeMetadata.getParent(), typeMetadata.getFieldName()),
           new JsonTypeAdapterFactory(),
           JsonElement.class);
   return new JsonMapTypeAdapter().deserialize(jsonElement, jsonTypeMetadata);
 }
 @Override
 public HbaseCell serialize(Byte object, TypeMetadata<HbaseCell> typeMetadata) {
   String className = typeMetadata.getParent().getClass().getSimpleName();
   return new HbaseCell(className, typeMetadata.getFieldName(), Bytes.toBytes(object));
 }
 @Override
 public HbaseCell serialize(Object object, TypeMetadata<HbaseCell> typeMetadata) {
   String className = typeMetadata.getParent().getClass().getSimpleName();
   String jsonString = new JsonMapperImpl().serialize(object);
   return new HbaseCell(className, typeMetadata.getFieldName(), Bytes.toBytes(jsonString));
 }