protobuf和json的一些整理

因為之前項目一直用的是google的protobuf(以下稱pb)用來做傳輸?shù)母袷?具體說 就是用這個來序列化數(shù)據(jù) 為的就是傳輸速度和體積?

這張是效率對比圖 (從別人那A來的) 可以明顯看出 pb的效率極高?

可惜越是方便的東西 越是好用的東西 開始總不是那么順手?

pb需要編寫 .proto文件 然后用google的編譯器進行編譯 (可以編譯成很多語言 比如 c++和java等)?

```

package tutorial;

option java_package = "com.example.tutorial";

option java_outer_classname = "AddressBookProtos";

message Person {

required string name = 1;

required int32 id = 2;

optional string email = 3;

enum PhoneType {

MOBILE = 0;

HOME = 1;

WORK = 2;

}

message PhoneNumber {

required string number = 1;

optional PhoneType type = 2 [default = HOME];

}

repeated PhoneNumber phones = 4;

}

message AddressBook {

repeated Person people = 1;

}

```

這是pb文件的寫法 不詳細(xì)描述 請翻墻看 https://developers.google.com/protocol-buffers/docs/javatutorial?

剛開始走了很多歪路 ?因為其實百度 pb的資料 大多數(shù)都是從googl官網(wǎng)A下來 教你怎么編譯的 然后有一些基礎(chǔ)的寫法 比如 ?required repeat optional 等 税手。沮尿。就是一些基礎(chǔ)的用法 這并不能滿足我們的需求?

因為你如果要在java里面使用 ?(我用的最多的是給手機端寫接口) 刊驴,那么你知道以上的并不能使用 需要知道更多的東西 比如 rpc 和 grpc ?我之前一直不明白 看人家說的好高端

其實你只要涉及到寫接口 ?那么你其實和rpc接觸過很多很多 ?(請自行百度rpc)?

RPC(Remote Procedure Call Protocol)——遠(yuǎn)程過程調(diào)用協(xié)議?

我粗鄙的理解就是? c/s? 當(dāng)遠(yuǎn)程的客戶端(ios或者android)調(diào)用你部署在服務(wù)器上(可以是tomcat跑 或者 jetty 或者 。笤昨。。)的接口 ?那么就是 rpc 至于grpc 握恳。瞒窒。還是google吧 ?其實就是用pb來做序列化的 。乡洼。 其他還有一些變化?

————————

我一直在用pb 然而ios的同事不會去用崇裁。匕坯。我也不知道該怎么和他說 (只會寫pb的接口)所以就準(zhǔn)備改成json的。然后碰到一系列蛋疼的問題 比如 亂碼 比如 content-type 不是 application/json 拔稳,把我弄的欲仙欲死?

現(xiàn)在開始說 換成json后出現(xiàn)的問題 首先是亂碼 我在spring-mvc.xml里面已經(jīng)配置了 消息轉(zhuǎn)化器 并且 設(shè)置為 utf-8 然而還是 亂碼 后來 web.xml里面也設(shè)置了字符過濾 還是不行?

后來百度n多資料得知 其實是 spring框架內(nèi) StringHttpMessageConverter 類中葛峻,默認(rèn)采用的字符集是 ISO-8859-1 。 而我接口返回的都是 string 自然而然亂碼 巴比。其實你只要封裝一個類來做返回類型 就不會出現(xiàn)這樣的問題 這種問題只有在string的時候才會出現(xiàn)?

然而知道了問題的我 還是想返回string 因為感覺比較簡潔 (其實不然术奖。。轻绞。) 采记, 然后看解決方法 ?

網(wǎng)上搜集的文章 http://blog.csdn.net/wangyangbto/article/details/48804155

? ? ? ? ? ? ? ? ? ? ? ? ? http://blog.csdn.net/sen19910708/article/details/49933213

大致是兩種 一種是重寫那個 StringHttpMessageConverter 類 。

還有一種是 修改 spring配置里面的消息配置器 直接修改為 utf-8 (試過好像不行)

這個問題解決后 ?讓ios測試接口 政勃。唧龄。和我說協(xié)議不對 我一看?

。奸远。既棺。 無語了。然走。然后開始找問題 援制。后來看到 原來你返回json 使用的是 @responsebody 這個注解 然而這個注解 會自動根據(jù) 瀏覽器 響應(yīng)時候的 accept的第一個值作為 content-type。 如果你不指定的話

然后就只能在requestmapping上加上 @RequestMapping(value ="/test",produces="application/json;charset=UTF-8")

然后就不會出現(xiàn)這個問題了芍瑞。晨仑。 但是難道每個都要這樣寫嗎 我找遍了百度 好像還是不行

認(rèn)命? 其實可以寫個 Inteceptor 然后在 spring配置里面加載 達到全局效果

————————————

暫時告一段落 ?其實 ? content-type的格式 不代表你所使用的技術(shù) ios和我說 你怎么傳回來的是 text/html 這都沒人用了 如果你用這個 我還要json干嘛 ?其實這是誤區(qū) ?content-type只是你看的格式 不代表你傳輸中的序列化的格式 ? 兩者并無多大關(guān)系 ? 不過他的網(wǎng)絡(luò)協(xié)議框架 只會 json 那干后臺的我們就只能改了拆檬。洪己。?

還有處理時間戳 辦法很多 可以在字段上 注解 ?前提是你用的是 fastjson ?, jackson也是可以的?

關(guān)于 pb的 其他東西 https://github.com/jhunters/jprotobuf ?(這玩意好像是和百度有關(guān)系 好像是百度的人寫的竟贯。答捕。)不需要在寫pb文件 可以直接實體類上 直接注解 達到一樣的效果?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屑那,隨后出現(xiàn)的幾起案子拱镐,更是在濱河造成了極大的恐慌,老刑警劉巖持际,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沃琅,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜘欲,警方通過查閱死者的電腦和手機益眉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郭脂,你說我怎么就攤上這事年碘。” “怎么了展鸡?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵屿衅,是天一觀的道長。 經(jīng)常有香客問我娱颊,道長傲诵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任箱硕,我火速辦了婚禮拴竹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剧罩。我一直安慰自己栓拜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布惠昔。 她就那樣靜靜地躺著幕与,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镇防。 梳的紋絲不亂的頭發(fā)上啦鸣,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音来氧,去河邊找鬼诫给。 笑死,一個胖子當(dāng)著我的面吹牛啦扬,可吹牛的內(nèi)容都是我干的中狂。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼扑毡,長吁一口氣:“原來是場噩夢啊……” “哼胃榕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞄摊,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤勋又,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后换帜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赐写,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年膜赃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揉忘。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡跳座,死狀恐怖端铛,靈堂內(nèi)的尸體忽然破棺而出琢锋,到底是詐尸還是另有隱情笨鸡,我是刑警寧澤扯罐,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布宦芦,位于F島的核電站铸史,受9級特大地震影響管嬉,放射性物質(zhì)發(fā)生泄漏心褐。R本人自食惡果不足惜真屯,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一几颜、第九天 我趴在偏房一處隱蔽的房頂上張望倍试。 院中可真熱鬧,春花似錦蛋哭、人聲如沸县习。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躁愿。三九已至,卻和暖如春沪蓬,著一層夾襖步出監(jiān)牢的瞬間彤钟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工跷叉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逸雹,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓性芬,卻偏偏與公主長得像峡眶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子植锉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容