2012-09-22 38 views
5

我已經看過非常相似的標題帖子(Is there a C equivalent to Perls' Dumper() method in Data::Dumper?),關於C等於Data::Dumper::Dumper();。 Go語言有類似的問題。在Data :: Dumper中是否有與Perls的Dumper()方法等價的Go語言?

我是一個Perl貿易狂熱分子,是一名編程愛好者,每天使用Data::Dumper和類似的子代數百次。我已經開始學習Go了,因爲它看起來像一種有趣而有趣的語言,能夠讓我擺脫我遇到的Perl的痕跡,同時讓我的眼睛看到新的做事方式......其中一件事我真正想要的是一樣的東西:

fmt.Println(dump.Dumper(decoded_json)) 

看到所產生的數據結構,像Data::Dumper會轉成JSON哈希值的數組。在Go中看到這一點,將幫助我理解如何構建和處理數據。像這樣的東西在我學習Go時會被認爲是一個重要的燈泡時刻。

相反,在Ç對方後所作的發言,我相信我們可以這樣寫,因爲我會路過自卸車給println,編譯什麼都JSON字符串或XML頁面我通過和解碼後。我應該能夠看到解碼的結果,像Dumper這樣的狀態......那麼,還有什麼知道存在這樣的事情嗎?或者可能有一些指針來完成這樣的事情?

回答

10

嗨,歡迎大家走我是前Perl的黑客自己。

至於你的問題,編碼/ json包可能是最接近你會發現去數據漂亮的打印機。我不確定你是否真的需要它。 Data :: Dumper在Perl中很棒的原因之一是因爲很多時候,你真的不知道你正在使用的數據的結構,而沒有直觀地檢查它。儘管一切都是特定類型,每種特定類型都有特定的結構。如果你想知道數據的外觀,那麼你可能只需要看看它的定義。

你應該看看其他的一些工具包括:

  • fmt.Println("%#v", data)將打印在旅途中的語法形式的數據。
  • fmt.Println("%T", data)將以go-syntax 的形式打印數據的類型。
  • 更多FMT格式字符串選項進行了記載:http://golang.org/pkg/fmt/
+0

目前在['json.Unmarshall'(http://golang.org/pkg是(用'%+ v')爲例/ encoding/json /#Unmarshal)doc。 – ephemient

+0

@ Jeremy Wall謝謝! – jnbek

5

我不熟悉Perl和自卸車,但是從我的理解您的文章和相關的C柱(和功能的這個名字的!),它輸出數據結構的內容。

您可以使用fmt package的%v動詞做到這一點。我假設你的JSON數據被解碼成一個結構或一張地圖。使用fmt.Printf("%v", json_obj)將輸出值,而%+ v將添加字段名稱(對於結構 - 如果其映射,則%v將同時輸出鍵和值),並且%#v也將輸出類型信息。

相關問題