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

jnb*_*bek 7 xml perl json go

我看过一个非常类似的标题帖子(在Data :: Dumper中是否有一个与Perls'Dum​​per()方法相当的C ),关于C等价于Data::Dumper::Dumper();.我对Go语言有类似的问题.

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

fmt.Println(dump.Dumper(decoded_json))
Run Code Online (Sandbox Code Playgroud)

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

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

Jer*_*all 10

嗨,欢迎来到我自己以前的perl黑客.

至于你的问题,encoding/json包可能是你找到的go go data pretty打印机最接近的.我不确定你真的需要它.Data :: Dumper在perl中很棒的原因之一是因为很多时候你真的不知道你正在消耗的数据结构而没有直观地检查它.尽管一切都是特定类型,每种特定类型都有特定的结构.如果您想知道数据的样子,那么您可能只需要查看它的定义.

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

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


Dru*_*ska 6

我找到了两个软件包来帮助可视化Go中的数据。

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

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


mna*_*mna 5

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

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