2012-09-22 7 views
5

Przyjrzałem się bardzo podobnie zatytułowanej post (Is there a C equivalent to Perls' Dumper() method in Data::Dumper?), w odniesieniu do C odpowiednik Data::Dumper::Dumper();. Mam podobne pytanie do języka Go.Czy istnieje odpowiednik metody Go w trybie Dumper() w Data :: Dumper?

Jestem Perl Zealot z zawodu i jestem hobbystą, programistą i używam Data::Dumper i podobnego potomka dosłownie setki razy dziennie. Podjąłem naukę Go, ponieważ wygląda to na zabawny i interesujący język, co pozwoli mi wydostać się z rutyny Perl, w której się znajduję, jednocześnie otwierając oczy na nowe sposoby robienia rzeczy ... Jedna z rzeczy naprawdę chcę coś jak:

fmt.Println(dump.Dumper(decoded_json)) 

zobaczyć powstałą strukturę danych, jak Data::Dumper okaże JSON na tablicę mieszań. Zobaczenie tego w Go, pomoże mi zrozumieć, jak konstruować i pracować z danymi. Coś takiego byłoby uważane za ważny moment w żmudnym uczeniu się Go.

przeciwieństwie do oświadczeń złożonych w C odpowiednik postu, wierzę, możemy napisać to, a ponieważ będę przechodzącej Wywrotka do println, po kompilacji, co kiedykolwiek ciąg JSON lub XML strona I przepustkę i dekodowania. Powinienem być w stanie zobaczyć wynik dekodowania, w stanie podobnym do Dumpera ... Czy wie coś więcej o tym, co istnieje? a może jakieś wskazówki, jak uzyskać coś takiego?

Odpowiedz

10

Witam, witam, jestem sam jako były haker Perl.

Jeśli chodzi o twoje pytanie, pakiet encoding/json jest prawdopodobnie najbliżej znalezionej drukarki. Nie jestem pewien, czy naprawdę tego potrzebujesz. Jednym z powodów, dla których Data :: Dumper był niesamowity w Perlu, było to, że wiele razy nie znałeś struktury danych, które zużywałeś, bez wizualnej kontroli. Mimo wszystko wszystko jest specyficznym typem, a każdy konkretny typ ma określoną strukturę. Jeśli chcesz wiedzieć, jak będą wyglądać dane, prawdopodobnie wystarczy spojrzeć na jego definicję.

Niektóre inne narzędzia należy spojrzeć na to:

  • fmt.Println("%#v", data) będzie drukować dane w formie Go-składni.
  • fmt.Println("%T", data) wydrukuje typ danych w formularzu składnia .
  • sznurek Więcej opcji formatu fmt są udokumentowane tutaj: http://golang.org/pkg/fmt/
+0

Jest przykładem (z użyciem '% + v') na [' json.Unmarshall'] (http://golang.org/pkg/encoding/json/# Unmarshal) doc. – ephemient

+0

@ Jeremy Wall Thanks !! – jnbek

5

nie jestem zaznajomiony z Perl i Dumper, ale z tego co rozumiem twojego postu i związanego C postu (i samej nazwy funkcji !), wyprowadza zawartość struktury danych.

Możesz to zrobić za pomocą% v czasownika fmt package. Zakładam, że twoje dane JSON są dekodowane do struktury lub mapy. Użycie wartości fmt.Printf("%v", json_obj) wyświetli wartości, a% + v doda nazwy pól (dla struct - bez różnicy, jeśli jest to mapa,% v wyświetli zarówno klucze, jak i wartości), a% # v również wyświetli informacje o typie.

Powiązane problemy