我正在从第三方网站(家庭用电量)检索 JSON,并且根据我从该网站请求的内容,返回的 JSON 可能是也可能不是数组。例如,如果我请求我的智能电表列表,我会得到这个(结果被截断,因为尺寸很大):
{"gwrcmds":{"gwrcmd":{"gcmd":"SPA_UserGetSmartMeterList","gdata":{"gip":{"version":"1"...
其中gwrcmd是单个元素。
但是如果我要求在过去半小时内用电,我会得到这个:
{"gwrcmds":{"gwrcmd":[{"gcmd":"DeviceGetChart","gdata":{"gip":{"version":"1" ...
看看gwrcmd现在如何成为一个数组?
在我的 Go 应用程序中,我有一个看起来像这样的结构(再次被截断,因为它持续了一段时间。在“版本”下面有更多的子结构和属性:
type Response struct { Gwrcmds struct { Gwrcmd struct { Gcmd string Gdata struct { Gip struct { Version string
如果gwrcmd
是一个数组,Gwrcmd
需要是一个[]struct { }
,但如果不是,它只是一个普通的旧struct { }
问题是,json.Unmarshal
如果 JSON 有一个数组而结构没有切片(反之亦然),则只会返回错误。
我是否需要创建第二个结构体来复制第一个结构体(除了用 a[]struct { }
代替),还是有更好的方法来做到这一点?我想到了一些接口,但我还没有真正接触过那些,所以我不能 100% 确定它们。
白衣非少年
相关分类