簡體   English   中英

序列化/反序列化C ++類

[英]Serialize/ Deserialize C++ classes

我正在尋找一種在兩個客戶端aptication之間發送C ++類的方法。 我正在尋找一種方法,我可以找到的是我需要為每個類Serialize / Deserialize(例如JSON)函數創建並通過TCP / IP發送它。 我正面臨的主要問題是我需要傳遞約600個類(其中一些類包括其他類的實例),這意味着我需要花費下一次編寫序列化/反序列化函數。

是否有編寫Serialize / Deserialize函數的通用方法? 有沒有其他方式發送C ++類?

謝謝,蓋伊埃爾加斯。

提升序列化
雖然我沒有把它用在自己的身上,但在工作中我很受歡迎。
有關它的更多信息,請參閱“Boost(1.54.00)Serialization”

節約
Thrift具有非常有限的序列化功能,我認為這不符合您的要求。 但它可以幫助您將數據從一個客戶端“移動”到另一個客戶端,即使他們使用不同的語言。
更多關於它的信息可以在“Thrift:The Missing Guide”中找到

你在使用框架嗎? 例如,Qt和MFC內置了序列化,可以讓您的任務更輕松。 否則我猜你需要在600個課程中花費至少一些努力。

如上所述,Boost Serialization可能是一個很好的方法,您也可以使用Boost Asio通過Tcp發送序列化類: http//www.boost.org/doc/libs/1_54_0/doc/html/boost_asio.html

或者,有一個用於Google協議緩沖區的C ++ API(protobuf): https//developers.google.com/protocol-buffers/docs/reference/cpp/

嘗試s11nnosjob

s11n(序列化的縮寫)是一個開源項目,專注於C ++編程語言中對象的通用序列化(即對象持久性)。

nosjob,一個用於生成和使用JSON數據的C ++庫。

您可能對ASN.1感興趣。 它不一定是最容易使用的,工具/庫有點難以獲得( http://www.obj-sys.com/index.php上的Objective Systems值得一看,但不是免費的)。

然而,最大的優點是它非常標准化(因此庫版本兼容性沒有問題)並且大多數語言都以這種或那種方式受到支持。 如果您需要跨多個平台的支持,則很方便。 它也進行二進制編碼,因此它的方式比XML(它也支持)更不臃腫。 我出於這些原因選擇了它,並沒有后悔。

如果您在linux平台上,可以直接使用json.h庫進行序列化。 這是我遇到的示例代碼:)

Json Serializer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM