如何漂亮地打印Golang结构? [英] How to pretty print a Golang structure?
问题描述
我正在解组一个结构,我希望它以格式化的方式进行打印.
I am unmarshaling a struct and I would like it to print it in a formatted manner.
我的代码( https://play.golang.org/p/D0KwGP6Cxa0 )当前产生以下输出:
My code (https://play.golang.org/p/D0KwGP6Cxa0) currently produces the following output:
main.ADIStruct{CondensedADI:[]main.CondensedADI{main.CondensedADI{Name:"Type", Value:"title"}, main.CondensedADI{Name:"Title", Value:"Ste Life_S01_E10_"}, main.CondensedADI{Name:"Title_Brief", Value:"Ste Life_S01_E10_HD"}, main.CondensedADI{Name:"Episode_Name", Value:"Cody Goes to Camp"}, main.CondensedADI{Name:"Episode_ID", Value:"10"}, main.CondensedADI{Name:"Summary_Short", Value:"Zack is excited to finally get rid of his brother when Cody leaves for math camp."}, main.CondensedADI{Name:"Rating", Value:"TV-G"}, main.CondensedADI{Name:"Run_Time", Value:"00:22:50"}, main.CondensedADI{Name:"Display_Run_Time", Value:"00:23"}, main.CondensedADI{Name:"Year", Value:"2005"}, main.CondensedADI{Name:"Closed_Captioning", Value:"Y"}, main.CondensedADI{Name:"Genre", Value:"Family"}, main.CondensedADI{Name:"Billing_ID", Value:"00000"}, main.CondensedADI{Name:"Actors_Display", Value:"Ashley Tisdale ( Maddie ), Brenda Song ( London ), Cole Sprouse ( Cody ), Dylan Sprouse ( Zack ), Kim Rhodes ( Carey ), Phill Lewis ( Moseby )"}, main.CondensedADI{Name:"Licensing_Window_Start", Value:"2019-05-15 00:00:00"}, main.CondensedADI{Name:"Licensing_Window_End", Value:"2019-10-31 00:00:00"}, main.CondensedADI{Name:"Preview_Period", Value:"0"}, main.CondensedADI{Name:"Display_As_New", Value:"7"}, main.CondensedADI{Name:"Display_As_Last_Chance", Value:"7"}, main.CondensedADI{Name:"Provider_QA_Contact", Value:"DATG.DL-VOD.Support@disney.com"}, main.CondensedADI{Name:"Suggested_Price", Value:"0.00"}, main.CondensedADI{Name:"Category", Value:"Disney Channel HD/Suite Life"}}}
我希望它仅具有名称和值,并且在每个项目之后都有一个新行.像这样:
I would like it to only have the name and value and have a new line after each item. Such as this:
Name:"Type", Value:"title"
Name:"Title", Value:"Ste Life_S01_E10_"
有什么想法我该怎么做?
Any ideas how I could do that?
推荐答案
Go标准库中有一个函数,该函数采用 interface {}
并生成缩进的JSON输出:
There is a function in the Go standard library taking a interface{}
and producing an indented JSON output: json.MarshalIndent
.
这是一个示例如何将其应用于您的用例的示例( https://play.golang.org/p/3geUEEHESSa ):
Here is an example how it could be applied to your use-case (https://play.golang.org/p/3geUEEHESSa):
s, _ := json.MarshalIndent(b, "", "\t");
fmt.Print(string(s))
虽然与您所期望的不完全相同,但这会产生一个可读性强的JSON输出:
While not being exactly what you expected, this produces a JSON output which is pretty readable:
{
"CondensedADI": [
{
"Name": "Type",
"Value": "title"
},
{
"Name": "Title",
"Value": "Ste Life_S01_E10_"
},
...
这篇关于如何漂亮地打印Golang结构?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!