通過使用github.com/golang/protobuf/ptypes/struct
和jsonpb github.com/golang/protobuf/jsonpb
,你可以這樣做:
func TestFunTest(t *testing.T) {
p := &pb.KnownTypes{}
e := UnmarshalString(`{"val":null}`, p)
fmt.Println(e, p)
p = &pb.KnownTypes{}
e = UnmarshalString(`{"val":1}`, p)
fmt.Println(e, p)
p = &pb.KnownTypes{}
e = UnmarshalString(`{"val":"string"}`, p)
fmt.Println(e, p)
p = &pb.KnownTypes{}
e = UnmarshalString(`{}`, p)
fmt.Println(e, p)
}
輸出:
[ `go test -test.run="^TestFunTest$"` | done: 1.275431416s ]
<nil> val:<null_value:NULL_VALUE >
<nil> val:<number_value:1 >
<nil> val:<string_value:"string" >
<nil>
PASS
對不起,我是Go的新手,我不確定,但是如果說SomeField2是「hello」,它會不會說這是空的? –
不錯,需要一點編輯 - https://play.golang.org/p/UW8L68K068 –
@AlexanderTrakhimenok感謝編輯過的評論。 – PieOhPah