我意识到有很多类似的问题,但我仍然无法找到我的问题的答案。
我的 JSON 文件的相关部分如下所示:
{
...,
"roi": {
"roi": [
{
"id": "original",
"x": 600,
"y": 410,
"width": 540.0,
"height": 240.0
}
]
},
...
}
这是我定义结构的方式:
type RoI struct {
Id string `json:"string"` // Default Value: "original"
Width float64 `json:"width" validate:"gte=0,lte=10000"` // RoI width (from 0 - 10000) - how much we move to the right from (X,Y) point
Height float64 `json:"height" validate:"gte=0,lte=10000"` // RoI height (from 0 - 10000) - how much we move down from the (X,Y) point
X float64 `json:"x" validate:"gte=0,lte=10000"` // X coordinate which together with Y coordinate forms a top left corner of the RoI (from 0 - 10000)
Y float64 `json:"y" validate:"gte=0,lte=10000"` // Y coordinate which together with X coordinate forms a top left corner of the RoI (from 0 - 10000)
}
我假设我总是会在"roi"数组中获得 1 个元素。请注意,我需要保留此结构用于许多不同的目的。
我想将roi数组内的 1 个元素解析为RoI结构体。这是我到目前为止所尝试过的:
var detectionResMap = make(map[string]interface{})
err = json.Unmarshal(fileByteArr, &detectionResMap)
if err != nil {
glog.Errorf("Error occurred while trying to Unmarshal JSON data into detectionResMap. Error message - %v", err)
return err
}
当我使用以下方式打印时detectionResMap["roi"]:
glog.Infof("[INFO]: %v", reflect.TypeOf(detectionResMap["roi"]))
glog.Infof("[INFO]: %v", detectionResMap["roi"])
我得到以下输出:
I0801 19:56:45.392362 125787 v2.go:87] [INFO]: map[string]interface {}
I0801 19:56:45.392484 125787 v2.go:88] [INFO]: map[roi:[map[height:240 id:original width:540 x:600 y:410]]]
我得到以下信息: { 0 0 0 0}
如果我尝试将其更改为[]RoI:
json: cannot unmarshal object into Go value of type []config.RoI
任何帮助将不胜感激
大话西游666
相关分类