方法介紹
protobuf的介紹在這里就不詳細(xì)介紹了,主要是俺也是剛接觸,感興趣的同學(xué)可以去搜索相關(guān)博客或者直接去看源碼以及google的官方文檔(官方文檔表示很吃力)或者去這個(gè)網(wǎng)站:https://developers.google.com/protocol-buffers/docs/overview查看相應(yīng)內(nèi)容,這里面內(nèi)容很全面,可以很方面的查詢各個(gè)函數(shù)的使用方法以及功能。本篇文章主要介紹一下本人最近做的一個(gè)protobuf轉(zhuǎn)json的小工具,下面進(jìn)行拆分講解,完整的代碼在:git@github.com:chengfeiGitHub/P-bToJson.git。
protobuf自帶一個(gè)MessageToJson()的函數(shù)可以將對應(yīng)的消息轉(zhuǎn)換成json,一般情況下該函數(shù)可以滿足轉(zhuǎn)換需求。但是,最近項(xiàng)目的要求使用MessageToJson()無法實(shí)現(xiàn),主要要求是:
選擇特定的messge進(jìn)行轉(zhuǎn)換(主要是提供包含需求字段號的set或者vector,根據(jù)提供的字段號進(jìn)行轉(zhuǎn)換);
對于Enum類型的消息,可以選擇顯示枚舉名或者枚舉值;
對于字段值為0的字段,可以選擇顯示或者不顯示.
主要有這三個(gè)要求,對于功能2、3現(xiàn)在最新的protobuf應(yīng)該是支持的,但是沒有功能1的實(shí)現(xiàn)方式,所以只好自己寫一個(gè)小工具。
說明:本工具由C++編寫完成