Cambiar nombres de propiedades mientras se serializa a JSON sin código fuente

Necesita serializar objetos Java a JSON mientras realiza la compresión, como cambio de nombre, exclusión, etc. Los objetos usan la clase de jar, cuyo código fuente no está disponible.

Busqué en muchas bibliotecas ( Jackson , Gson ), pero no encontré ninguna que resolviera este problema en particular. La mayoría de ellos están basados ​​en anotaciones, que no puedo usar dado que no tengo código fuente.

Una forma de resolver este problema es utilizar la reflexión y recorrer el objeto de forma recursiva hasta que encuentre un nombre de propiedad que deba reemplazarse o que el objeto se excluya en JSON serializado.

Necesito solución para esto. Mejor si ya está implementado y probado.

Respuesta 1

También puede echar un vistazo a la biblioteca de Genson http://code.google.com/p/genson/ .

Puede cambiar el nombre y filtrar con un código bastante conciso:

// renames all "fieldOfName" to "toName", excludes from serialization 
// and deserialization fields named "fieldNamed" and declared in DefinedInClass
// and uses fields with all visibility (protected, private, etc)

Genson genson = new Genson.Builder().rename("fieldOfName", "toName")
                                    .exclude("fieldNamed", DefinedInClass.class)
                                    .setFieldFilter(VisibilityFilter.ALL)
                                    .create();

genson.serialize(myObject);
  • Si desea hacer un filtrado más complejo (basado en anotaciones, por ejemplo), puede implementar BeanMutatorAccessorResolver o extender BaseResolver .

  • Lo mismo para cambiar el nombre de la propiedad, puede implementar PropertyNameResolver y tener control total.

  • Y, por último, si desea filtrar campos, métodos o constructores de acuerdo con sus modificadores, puede definir su propio VisiblityFilter .

  • Con respecto al rendimiento del filtrado / cambio de nombre, no debería haber ningún problema, ya que se realiza solo una vez por clase y luego se almacena en caché.

Para comenzar a utilizar Genson, puede consultar la Guía de inicio .

Respuesta: 2

Necesito ayuda real con mi proyecto Java. Es un JFrame controlado por la consola, donde los comandos que escribe en la consola DEBEN reaccionar a la ventana JFrame, solo que no lo hace. Este es un gran problema. Aquí'...

Digamos que tenía una JMenuBar. En ese JMenuBar, tuve un JMenu. En ese JMenu, había otro menú, y en ese menú, había elementos. ¿Hay alguna forma de hacer esto?

Estoy usando archivos mapeados de memoria en algún código Java para escribir rápidamente en un archivo 2G. Estoy mapeando todo el archivo en la memoria. El problema que tengo con mi solución es que si el archivo en el que estoy escribiendo ...

Estoy tratando de completar una tarea para la universidad. He hecho la mayor parte del código y, por lo que puedo decir, debería funcionar. Sin embargo, sigo recibiendo un error. No estoy realmente seguro de qué ...