第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

取消使用已更改的嵌入類型的郵件的合并時出現(xiàn)未知字段錯誤

取消使用已更改的嵌入類型的郵件的合并時出現(xiàn)未知字段錯誤

Go
不負相思意 2022-08-24 12:52:31
給定一個這樣的原型:message Request {    uint64 account_id = 1;    message Foo{        uint64 foo_id = 1;    }    repeated Foo foos = 2;當我添加一個名為bar_idmessage Request {    uint64 account_id = 1;    message Foo{        uint64 foo_id = 1;        uint64 bar_id = 2;    }    repeated Foo foos = 2;我在使用舊的 via 反序列化時遇到錯誤。錯誤為 。clientproto.UnmarshalText(msg, request)unknown field name "bar_id" in serviceA.Request_Foo我知道在proto-3中處理有很多變化,但這不是預期的,因為它似乎違反了向前兼容性(新服務器向舊客戶端發(fā)送請求)。這是否與使用嵌入式類型有關(guān)?在不強制客戶端更新的情況下更新服務器的最佳方法是什么?unknown field
查看完整描述

1 回答

?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

看起來您正在使用已棄用 github.com/golang/protobuf。使用 google.golang.org/protobuf/encoding/prototext


UPD:使用丟棄未知


(prototext.UnmarshalOptions{DiscardUnknown: true}).Unmarshal(b, msg)

pb.proto:


syntax = "proto3";


// protoc --go_out=. *.proto


package pb;


option go_package = "./pb";


message RequestOld {

    uint64 account_id = 1;

    message Foo{

        uint64 foo_id = 1;

    }

    repeated Foo foos = 2;

}


message RequestNew {

    uint64 account_id = 1;

    message Foo{

        uint64 foo_id = 1;

        uint64 bar_id = 2;

    }

    repeated Foo foos = 2;

}

功能:


import "google.golang.org/protobuf/encoding/prototext"


// marshal old message

msgOld := &pb.RequestOld{

    AccountId: 1,

    Foos: []*pb.RequestOld_Foo{

        {

            FooId: 2,

        },

    },

}


log.Println("old:", msgOld.String())


bOld, err := prototext.Marshal(msgOld)

if err != nil {

    panic(err)

}


// unmarshal to new message

msgNew := &pb.RequestNew{}

if err := prototext.Unmarshal(bOld, msgNew); err != nil {

    panic(err)

}


log.Println("new:", msgNew.String())

輸出:


2021/04/07 old: account_id:1  foos:{foo_id:2}

2021/04/07 new: account_id:1  foos:{foo_id:2}


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號