2012-09-22 19 views
5

He examinado la publicación con el mismo título (Is there a C equivalent to Perls' Dumper() method in Data::Dumper?), con respecto a una C equivalente a Data::Dumper::Dumper();. Tengo una pregunta similar para el idioma Go.¿Existe un lenguaje Go equivalente al método Dumper() de Perls en Data :: Dumper?

Soy un fanático de Perl Zealot, y soy un aficionado a los programas, y utilizo Data::Dumper y descendientes similares, literalmente, cientos de veces al día. He seguido aprendiendo Go, porque parece un lenguaje divertido e interesante, algo que me sacará de la rutina Perl en la que estoy, mientras abro mis ojos a nuevas formas de hacer cosas ... Una de las cosas realmente quiero decir algo como:

fmt.Println(dump.Dumper(decoded_json)) 

para ver la estructura de datos resultante, como Data::Dumper convertiría a la JSON en una serie de valores hash. Ver esto en Go, me ayudará a entender cómo construir y trabajar con los datos. Algo como esto se consideraría un momento importante de la bombilla en mi aprendizaje de Go.

Contrariamente a las declaraciones hechas en el puesto contraparte C, creo que podemos escribir esto, y ya que voy a estar pasando Volquete a PRINTLN, después de la compilación lo que cada vez cadena JSON o una página XML que entran y decodificación. Debería poder ver el resultado de la decodificación, en un estado de Dumper ... Entonces, ¿sabe algo más de algo como esto que existe? o tal vez algunos consejos para hacer algo como esto?

Respuesta

10

Hola y bienvenido a ir Soy el antiguo pirata informático.

En cuanto a su pregunta, el paquete de codificación/json es probablemente lo más cercano que encontrará a una impresora de datos go go. Aunque no estoy seguro de que realmente lo necesites. Una de las razones por las que Data :: Dumper fue increíble en Perl es porque muchas veces realmente no conocía la estructura de los datos que estaba consumiendo sin inspeccionarlos visualmente. Sin embargo, todo es un tipo específico y cada tipo específico tiene una estructura específica. Si quieres saber cómo serán los datos, probablemente solo necesites ver su definición.

Algunas otras herramientas que usted debe mirar incluyen:

  • fmt.Println("%#v", data) imprimirá los datos en forma de go-sintaxis.
  • fmt.Println("%T", data) imprimirá el tipo de datos en forma de sintaxis .
  • Más opciones de cadena de formato fmt se documentan aquí: http://golang.org/pkg/fmt/
+0

Hay un ejemplo (usando '% + V') en el [' json.Unmarshall'] (http://golang.org/pkg/encoding/json/# Unmarshal) doc. – ephemient

+0

@ Jeremy Wall ¡Gracias! – jnbek

5

no estoy familiarizado con Perl y camiones, pero por lo que entiendo de su puesto y el puesto de C relacionados (y el nombre de la función !), emite el contenido de la estructura de datos.

Puede hacerlo utilizando el verbo% v del fmt package. Supongo que sus datos JSON se decodifican en una estructura o un mapa. El uso de fmt.Printf("%v", json_obj) arrojará los valores, mientras que% + v agregará nombres de campo (para una estructura - no hay diferencia si es un mapa,% v dará como resultado claves y valores), y% # v también dará como resultado información de tipo.

Cuestiones relacionadas