我正在创建一个原型文件(并遵循 cloudEvents 标准)。
syntax = "proto3";
option go_package = "/events";
import "google/protobuf/timestamp.proto";
import "google/protobuf/any.proto";
message Event {
string specversion = 2;
string type = 3;
string source = 4;
string id = 5;
google.protobuf.Timestamp time = 6;
google.protobuf.Any data = 7;
map<string, CloudEventAttributeValue> attributes = 8;
string datacontenttype = 9;
string test = 10;
}
它在客户端和服务器之间运行良好。我们还想确保这个对象完全符合 cloudevents。测试一下如果我尝试使用 json.marshal() 编组这个对象,然后使用 json.unmarshal 解组到 cloudEvent 对象。在此测试中,由于 proto 对象和 cloudEvents 之间的时间字段数据类型不匹配,反序列化正在中断。
bytes, _ := json.Marshal(ev)
fmt.Println(string(bytes))
e := cloudevents.NewEvent()
json.Unmarshal(bytes, &e)
但是,如果我删除时间字段,一切正常。知道我错过了什么吗?