2012-09-22 15 views
5

Data::Dumper::Dumper();'a eşdeğer bir C ile ilgili olarak benzer şekilde başlıklandırılmış bir gönderiye (Is there a C equivalent to Perls' Dumper() method in Data::Dumper?) baktım. Go dili için benzer bir sorum var.Veri :: Damper'de Perls 'Dumper() yöntemine bir Go Dili eşdeğeri var mı?

Ticarımla bir Perl Zealot'um ve progamming bir hobiciyim ve günde yüzlerce kez Data::Dumper ve benzeri yavruları kullanıyorum. Go öğrenmeye başladım, çünkü eğlenceli ve ilginç bir dile benziyor, gözlerimde yeni şeyler yapmam için gözlerimi açarken, içinde olduğum Perl rutundan çıkacak bir şey var. Data::Dumper karmaları oluşan bir Array içine JSON açacak gibi

fmt.Println(dump.Dumper(decoded_json)) 

, ortaya çıkan veri yapısını görmek için: gerçekten istediğim bir şey gibidir. Bunu Go’da görmek, veriyi nasıl oluşturup çalışacağımı anlamama yardımcı olacak. Böyle bir şey Go'yu öğrenmemde büyük bir ampul anı sayılırdı. C muadili post yapılan açıklamalara

aksine, biz bu yazmak ve ben geçmek her ne JSON dize veya XML sayfası derleme ve dekoder sonra println için Damper geçen olacağım beri inanıyoruz. Deşifre etmenin sonucunu, Damper benzeri bir devlette görebilmeliydim ... Yani, böyle bir şey var mı? ya da belki böyle bir şey elde etmek için bazı işaretçiler?

cevap

10

Merhaba ve ben eski perl hacker kendim gidelim.

Sorunuzda, kodlama/json paketi muhtemelen veriye oldukça yakın bir yazıcıya bulacağınız en yakın pakettir. Gerçi gerçekten buna ihtiyacın olduğundan emin değilim. Data :: Dumper'ın perl'de mükemmel olmasının nedenlerinden biri, çoğu zaman görsel olarak denetlemeden tüketmekte olduğunuz verilerin yapısını bilmediğinizdir. Gitmekle birlikte, her şey belirli bir tiptir ve her spesifik tip belirli bir yapıya sahiptir. Eğer verilerin neye benzeyeceğini bilmek istiyorsanız, muhtemelen sadece tanımına bakmak gerekir. Eğer bakmak gerekir

Diğer bazı araçlar şunlardır:

  • fmt.Println("%#v", data) go-sözdizimi şeklinde veri yazdırılır.fmt.Println("%T", data), veri türünü go-syntax formunda yazdıracaktır.
  • Daha fmt biçimi dize seçenekleri burada belgelenen: http://golang.org/pkg/fmt/
+0

http://golang.org/pkg ([ 'json.Unmarshall'] üzerinde ('% + V' kullanarak) bir örnek var/kodlama/json/# Unmarshal) doc. – ephemient

+0

@ Jeremy Wall Teşekkürler !! – jnbek

5

ben Perl ve Devirmeli aşina değilim, ama senin yazı ve ilgili C yazı (ve fonksiyon çok ismin anladığım kadarıyla !), veri yapısının içeriğini çıkarır.

Bunu, fmt package'un% vbibunu kullanarak yapabilirsiniz. JSON verilerinizin bir yapıda veya bir haritanın içinde çözüldüğünü varsayalım. fmt.Printf("%v", json_obj) kullanarak, değerlerin çıktısını alırken,% + v alan adlarını ekleyecektir (bir yapı için - bir harita,% v, hem anahtar hem de değerlerin çıktısını verirse) ve% # v, tür bilgisini de gönderecektir.

İlgili konular