Google Protocol Buffer 的各语言实现版本

本文探讨了Google Protocol Buffers的串行化和反串行化功能,重点介绍了其基本写法,并提供了PHP、Node.js和其他语言版本的代码示例。通过实例演示了如何在不同语言环境中进行序列化和反序列化操作。

Google Protocol Buffer 专门用来串行化和反串行化对象,但官方仅实现了C++、Python、Java三种语言。其他语言版本也相继由不同的作者来实现。虽然有一定缺陷,也足以在大部分的项目中使用了。


.proto 的基本写法:


package feeds;
message Feed {
  optional string title = 1;
  message Entry {
    optional string title = 1;
  }
  repeated Entry entry = 2;
}

Python、C++、Java三种语言版本请见 

https://developers.google.com/protocol-buffers/docs/reference/overview 

代码生成:



<?php
require_once('../parser/pb_parser.php');
$test = new PBParser();
$test->parse('./feeds.proto');
?>
串行化:



<?php
require_once('message/pb_message.php');
require_once('pb_proto_test.php');
$feed = new Feed();
$feed->set_title('asdf');
$t = $feed->add_entry();
$t->set_title('dddd');
$bin = $feed->SerializeToString();
?>
反串行化:



<?php
require_once('message/pb_message.php');
require_once('pb_proto_test.php');
$feed = new Feed();
$feed->ParseFromString($bin);
?>

Node.js版本: 

https://npmjs.org/package/protobuf

代码生成:

protoc --descriptor_set_out=feeds.desc --include_imports feeds.proto
串行化与反串行化:

var fs = require('fs');
var Schema = require('protobuf_for_node').Schema;
var schema = new Schema(fs.readFileSync('feeds.desc'));
var Feed = schema['feeds.Feed'];
var aFeed = Feed.parse(aBuffer);
var serialized = Feed.serialize(aFeed);


转载于:https://my.oschina.net/hs110/blog/146323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值