执行 UnmarshalExtJSON 时读取数组的无效请求
invalid request to read array when doing UnmarshalExtJSON
我正在尝试使用 go.mongodb.org/mongo-driver/bson
中的 UnmarshalExtJSON
将扩展的 JSON 解编为一个结构
它给我一个错误:invalid request to read array
如何将这些数据解组到我的结构中?
MVCE:
package main
import (
"fmt"
"go.mongodb.org/mongo-driver/bson"
)
func main() {
var json = "{\"data\":{\"streamInformation\":{\"codecs\":[\"avc1.640028\"]}}}"
var workflow Workflow
e := bson.UnmarshalExtJSON([]byte(json), false, &workflow)
if e != nil {
fmt.Println("err is ", e)
// should print "err is invalid request to read array"
return
}
fmt.Println(workflow)
}
type Workflow struct {
Data WorkflowData `json:"data,omitempty"`
}
type WorkflowData struct {
StreamInformation StreamInformation `json:"streamInformation,omitempty"`
}
type StreamInformation struct {
Codecs []string `json:"codecs,omitempty"`
}
我正在使用 go 版本 1.12.4 windows/amd64
您正在使用 bson
包解组,但您正在使用 json
结构字段标签。将它们更改为 bson
结构字段标签,它应该适合你:
package main
import (
"fmt"
"go.mongodb.org/mongo-driver/bson"
)
func main() {
var json = "{\"data\":{\"streamInformation\":{\"codecs\":[\"avc1.640028\"]}}}"
var workflow Workflow
e := bson.UnmarshalExtJSON([]byte(json), false, &workflow)
if e != nil {
fmt.Println("err is ", e)
return
}
fmt.Println(workflow)
}
type Workflow struct {
Data WorkflowData `bson:"data,omitempty"`
}
type WorkflowData struct {
StreamInformation StreamInformation `bson:"streamInformation,omitempty"`
}
type StreamInformation struct {
Codecs []string `bson:"codecs,omitempty"`
}
输出:
paul@mac:bson$ ./bson
{{{[avc1.640028]}}}
paul@mac:bson$
我正在尝试使用 go.mongodb.org/mongo-driver/bson
UnmarshalExtJSON
将扩展的 JSON 解编为一个结构
它给我一个错误:invalid request to read array
如何将这些数据解组到我的结构中?
MVCE:
package main
import (
"fmt"
"go.mongodb.org/mongo-driver/bson"
)
func main() {
var json = "{\"data\":{\"streamInformation\":{\"codecs\":[\"avc1.640028\"]}}}"
var workflow Workflow
e := bson.UnmarshalExtJSON([]byte(json), false, &workflow)
if e != nil {
fmt.Println("err is ", e)
// should print "err is invalid request to read array"
return
}
fmt.Println(workflow)
}
type Workflow struct {
Data WorkflowData `json:"data,omitempty"`
}
type WorkflowData struct {
StreamInformation StreamInformation `json:"streamInformation,omitempty"`
}
type StreamInformation struct {
Codecs []string `json:"codecs,omitempty"`
}
我正在使用 go 版本 1.12.4 windows/amd64
您正在使用 bson
包解组,但您正在使用 json
结构字段标签。将它们更改为 bson
结构字段标签,它应该适合你:
package main
import (
"fmt"
"go.mongodb.org/mongo-driver/bson"
)
func main() {
var json = "{\"data\":{\"streamInformation\":{\"codecs\":[\"avc1.640028\"]}}}"
var workflow Workflow
e := bson.UnmarshalExtJSON([]byte(json), false, &workflow)
if e != nil {
fmt.Println("err is ", e)
return
}
fmt.Println(workflow)
}
type Workflow struct {
Data WorkflowData `bson:"data,omitempty"`
}
type WorkflowData struct {
StreamInformation StreamInformation `bson:"streamInformation,omitempty"`
}
type StreamInformation struct {
Codecs []string `bson:"codecs,omitempty"`
}
输出:
paul@mac:bson$ ./bson
{{{[avc1.640028]}}}
paul@mac:bson$