2012-09-22 6 views
5

Ho esaminato il post dal titolo molto simile (Is there a C equivalent to Perls' Dumper() method in Data::Dumper?), relativo a un valore C equivalente a Data::Dumper::Dumper();. Ho una domanda simile per la lingua Go.Esiste un linguaggio Go equivalente al metodo Dumper() di Perls in Data :: Dumper?

Sono un Perl Zealot di mestiere, e sono un appassionato di programmazione, e uso Data::Dumper e prole simile letteralmente centinaia di volte al giorno. Ho iniziato a imparare Go, perché sembra un linguaggio divertente e interessante, qualcosa che mi farà uscire dalla routine Perl in cui mi trovo, mentre apro gli occhi a nuovi modi di fare stuffz ... Una delle cose voglio davvero è qualcosa di simile:

fmt.Println(dump.Dumper(decoded_json)) 

per vedere la struttura di dati risultante, come Data::Dumper sarebbe trasformare il JSON in un array di hash. Vedere questo in Go mi aiuterà a capire come costruire e lavorare con i dati. Qualcosa di simile sarebbe considerato un importante momento della lampadina nel mio apprendimento di Go.

Contrariamente alle dichiarazioni rese nella controparte posta C, credo che possiamo scrivere questo, e dato che sarò passando Dumper a println, dopo la compilazione che cosa mai stringa JSON o XML pagina mi passa dentro e decodifica. Dovrei essere in grado di vedere il risultato della decodifica, in uno stato di Dumper ... Quindi, non sa più nulla di simile a questo? o forse alcuni indicatori per ottenere qualcosa come questo fatto?

risposta

10

Ciao e benvenuto per andare, sono io stesso l'ex hacker di Perl.

Per quanto riguarda la tua domanda, il pacchetto di codifica/json è probabilmente il più vicino a una stampante di dati di go-go. Non sono sicuro che tu ne abbia davvero bisogno. Uno dei motivi per cui Data :: Dumper è stato fantastico in perl è che molte volte non si conosceva la struttura dei dati che si stavano consumando senza visualizzarli visivamente. Con go go tutto è un tipo specifico e ogni specifico tipo ha una struttura specifica. Se vuoi sapere come saranno i dati allora probabilmente devi solo dare un'occhiata alla sua definizione.

Alcuni altri strumenti si dovrebbe guardare includono:

  • fmt.Println("%#v", data) stamperà i dati in forma di go-sintassi.
  • fmt.Println("%T", data) stamperà il tipo di dati in forma go-syntax .
  • opzioni corda più di formato fmt sono documentate qui: http://golang.org/pkg/fmt/
+0

C'è un esempio (usando '% + v') sul [' json.Unmarshall'] (http://golang.org/pkg/encoding/json/# Unmarshal) doc. – ephemient

+0

@ Jeremy Wall Grazie !! – jnbek

5

Non ho familiarità con il Perl e Dumper, ma da quello che ho capito del tuo post e il post correlati C (e il nome stesso della funzione !), emette il contenuto della struttura dati.

È possibile eseguire questa operazione utilizzando il verbo% v dello fmt package. Presumo che i tuoi dati JSON siano decodificati in una struct o in una mappa. L'utilizzo di fmt.Printf("%v", json_obj) produrrà i valori, mentre% + v aggiungerà i nomi di campo (per una struttura - nessuna differenza se è una mappa,% v genererà sia le chiavi che i valori), e% # v produrrà anche informazioni sul tipo.

Problemi correlati