var_dump print_r java php

var_dump - print_r java



¿Cuál es el equivalente Java de PHP var_dump? (9)

PHP tiene una función var_dump() que genera los contenidos internos de un objeto, mostrando el tipo y el contenido de un objeto.

Por ejemplo:

class Person { private $firstName; private $lastName; public function __construct($firstName, $lastName) { $this->firstName = $firstName; $this->lastName = $lastName; } } $person = new Person(''Jon'', ''Smith''); var_dump($person);

dará salida:

object(Person)#1 (2) { ["firstName:private"]=> string(3) "Jon" ["lastName:private"]=> string(5) "Smith" }

¿Cuál es el equivalente en Java que hará lo mismo?


Creo que la mejor manera de hacerlo es usando google-gson (una biblioteca Java para convertir JSON en objetos Java y viceversa)

Download , agregue el archivo "jar" a su proyecto

HashMap<String, String> map = new HashMap<String, String>(); map.put("key_1", "Baku"); map.put("key_2", "Azerbaijan"); map.put("key_3", "Ali Mamedov"); Gson gson = new Gson(); System.out.println(gson.toJson(map));

Salida:

{"key_3":"Ali Mamedov","key_2":"Azerbaijan","key_1":"Baku"}

Puede convertir cualquier objeto (matrices, listas, etc.) a JSON. Creo que es el mejor análogo de var_dump de PHP ()


El paquete apache commons lang proporciona una clase de este tipo que se puede utilizar para crear un método predeterminado toString () que utiliza la reflexión para obtener los valores de los campos. Solo eche un vistazo a this .


En mi experiencia, var_dump se usa típicamente para depurar PHP en lugar de un depurador paso a paso. En Java, puede utilizar su depurador IDE para ver una representación visual de los contenidos de un objeto.



Me gusta usar GSON porque a menudo ya es una dependencia del tipo de proyectos en los que estoy trabajando:

public static String getDump(Object o) { return new GsonBuilder().setPrettyPrinting().create().toJson(o); }

O sustituya GSON por cualquier otra biblioteca JSON que use.


Sus alternativas son anular el método toString() de su objeto para generar sus contenidos de la manera que desee, o usar el reflejo para inspeccionar el objeto (de forma similar a lo que hacen los depuradores).

La ventaja de utilizar la reflexión es que no necesitará modificar sus objetos individuales para que sea "analizable", pero existe una complejidad añadida y, si necesita soporte de objetos anidados, tendrá que escribir eso.

Este código listará los campos y sus valores para un Object "o"

Field[] fields = o.getClass().getDeclaredFields(); for (int i=0; i<fields.length; i++) { System.out.println(fields[i].getName() + " - " + fields[i].get(o)); }


Usted serialización XML, y debe obtener una representación muy clara incluso de objetos profundamente anidados.


Yo uso Jestr con resultados razonables.


No está tan cocido en Java, así que no obtienes esto gratis. Se hace con convenciones en lugar de construcciones de lenguaje. En todas las clases de transferencia de datos (y tal vez incluso en todas las clases que escriba ... ), debe implementar un método sensible toString . Así que aquí debe anular toString() en su clase Person y devolver el estado deseado.

Hay utilidades disponibles que ayudan a escribir un buen método toString, o la mayoría de los IDE tienen un atajo de escritura automático toString() .

EDITAR: enlaces muertos - ahora disponible here .