是否有一种Go语言等同于Data :: Dumper中的Perls'Dum​​per()方法?

时间:2012-09-22 01:54:40

标签: json xml perl go

我看过一篇非常类似的帖子(Is there a C equivalent to Perls' Dumper() method in Data::Dumper?),关于等同于Data::Dumper::Dumper();的C.我对Go语言也有类似的问题。

我是Perl Zealot的交易,并且是一个程序化的爱好者,并且每天使用Data::Dumper和类似的后代数百次。我已经开始学习Go了,因为它看起来像一个有趣而有趣的语言,这些东西会让我从Perl rut中走出来,同时睁开眼睛看新的做法......其中一件事我真的想要的是:

fmt.Println(dump.Dumper(decoded_json))

查看结果数据结构,如Data::Dumper会将JSON转换为哈希数组。在Go中看到这一点,将帮助我理解如何构建和使用数据。在我学习Go时,这样的事情将被视为一个重要的灯泡时刻。

C 对应帖子中的陈述相反,我相信我们可以写这个,因为我将把Dumper传递给Println,在编译之后我通过了JSON字符串或XML页面在和解码。我应该能够在像Dumper这样的状态下看到解码的结果......那么,是否还有更多知道这样的存在?或者可能有一些指针来完成这样的事情?

3 个答案:

答案 0 :(得分:10)

嗨,欢迎自己去找我以前的perl黑客。

关于你的问题,encoding / json包可能是你找到的一个go数据漂亮的打印机。我不确定你真的需要它。 Data :: Dumper在perl中很棒的原因之一是因为很多时候你并没有在没有目测检查的情况下知道你正在消耗的数据的结构。尽管一切都是特定类型,每种特定类型都有特定的结构。如果您想知道数据的样子,那么您可能只需要查看它的定义。

您应该关注的其他一些工具包括:

  • fmt.Println("%#v", data)将以go-syntax形式打印数据。
  • fmt.Println("%T", data)将以go语法打印数据类型 形式。
  • 此处记录了更多fmt格式字符串选项:http://golang.org/pkg/fmt/

答案 1 :(得分:5)

我不熟悉Perl和Dumper,但根据我对你的帖子和相关的C帖子(以及函数的名称!)的理解,它输出了数据结构的内容。

您可以使用fmt package的%v动词执行此操作。我假设您的JSON数据被解码为结构或地图。使用fmt.Printf("%v", json_obj)将输出值,而%+ v将添加字段名称(对于结构 - 如果它是地图没有区别,%v将输出键和值),%#v也将输出类型信息

答案 2 :(得分:4)

我发现了一些帮助可视化Go中数据的软件包。

我个人最喜欢的 - https://github.com/davecgh/go-spew

还有 - https://github.com/tonnerre/golang-pretty