1 回答

TA貢獻1817條經驗 獲得超14個贊
您的嘗試不起作用,因為roiByteArr, {"roi": [{ ... }]}this 不匹配config.RoI也不匹配[]config.RoI。
您可以聲明一個與 json 匹配的類型:
type roiobj struct {
RoI struct {
RoI []RoI `json:"roi"`
} `json:"roi"`
}
var obj roiobj
if err := json.Unmarshal(fileByteArr, &obj); err != nil {
panic(err)
}
roi := obj.RoI.RoI[0]
或者正確檢索與您的結構相匹配的對象:
// in your real code do not omit safe type assertion like i'm doing here.
obj := detectionResMap["roi"].(map[string]interface{})["roi"].([]interface{})[0]
roiByteArr, err := json.Marshal(obj)
if err != nil {
return err
}
roi := config.RoI{}
if err := json.Unmarshal(roiByteArr, &roi); err != nil {
return err
}
或者實現自定義解組器:
func (r *RoI) UnmarshalJSON(b []byte) error {
type roi RoI
var obj struct {
RoI []roi
}
if err := json.Unmarshal(b, &obj); err != nil {
return err
}
*r = RoI(obj.RoI[0])
return nil
}
var fileobj struct {
// ...
RoI RoI `json:"roi"`
// ...
}
if err := json.Unmarshal(fileByteArr, &fileobj); err != nil {
panic(err)
}
roi := fileobj.RoI
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報