返回
Featured image of post go error类型转json

go error类型转json

问题

  • 在收集服务的访问记录时,需要将访问记录保存,定义结构体如下
type accessData struct {
	RemoteAddr string    // 远程访问主机地址
	RequestURI string    //访问的路由
	ServerName string    // 访问的服务名称
	AccessDate string    //访问的时间
	RunStatus bool       //服务是否正常运行
	RunError error       //运行报错:报错信息.
	ServerParam interface{} // 访问服务的参数
}
  • 通过结构体转json,同时通过get请求得到图下结果

  • “RunError”: {},被json转为{}的字符, 打印结构体,发现错误信息是有的:{192.168.1.101:53364 /v1/alarms/out/d GetOutAlarms 2021-10-12 10:09:42 false 没有这个报警🆔id },说明是error 转json问题

    问题分析与解决

    • 问题分析查看error类型定义发现:error类型只是一个接口。它可以包含任何实现它的具体类型的值
    • 解决:将结构体中错误转化为字符串类型,同时用err.Error()返回是错误的字符串
    type accessData struct {
      RemoteAddr string    // 远程访问主机地址
      RequestURI string    //访问的路由
      ServerName string    // 访问的服务名称
      AccessDate string    //访问的时间
      RunStatus bool       //服务是否正常运行
      RunError string       //运行报错:报错信息.
      ServerParam interface{} // 访问服务的参数
      }
      type error interface {
      Error() string
      }
    
  • 结果如图

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy