protobuf javaのインストールと使用
4530 ワード
インストール
https://blog.csdn.net/warrially/article/details/52683611 protobuf-java-3.0.0.tar.gz解凍をダウンロード
コンパイルインストール./configure--prefix=/home/protobuf make sudo make install
使用
まず任意のフォルダの下にxxx.protoファイルを作成します.以下の通りです.protoTest.proto
インストールディレクトリのbinディレクトリに入り、次のコマンドを実行してJavaファイルを生成します:(ここでは/home/protobufにインストールしました)
説明:第1パス/home/pzs/protobuf/protofileはtest.protoファイルを格納する親ディレクトリである. .第2パス/home/pzs/protobuf/javaclassはjavaを生成するファイル格納アドレスである. .第3のパス/home/pzs/protobuf/protofile/protoTest.protoは完了したprotoファイルパスです.(第1および第3のパス宣言は冗長ではありませんか?) 上記の操作が完了すると、protobufは/home/pzs/protobuf/javaclassパスの下でProtoTest.javaファイルを自動的に生成することがわかる.
この自動生成されたProtoTest.javaはどのような機能を提供していますか?
注意:ProtoTest.javaを使用するには、mavenに次の依存を追加します. set,get機能. シーケンス化と逆シーケンス化機能.
あるいは、シーケンス化されたデータをファイルに保存します. protobufとjsonの相互変換 JsonFormatを使用し、mavenに依存サポートを追加する必要があります.
protobuf回転json
json転送protobuf(マージ操作のように)
まとめ
Protocol buffersは、構造化データをシーケンス化するための柔軟で効率的で自動化されたプロトコルであり、データを構造化、シーケンス化した後、データの理解、伝送、記憶に有利である.
Protocol buffersデータ構造は、タイプのネストを許可し、jsonと同じように強力になります.
Protocol buffersがサポートするデータ型:データ型ここではProtobufがサポートする基本データ型のテーブルを見ることができます.
https://blog.csdn.net/warrially/article/details/52683611 protobuf-java-3.0.0.tar.gz解凍をダウンロード
コンパイルインストール./configure--prefix=/home/protobuf make sudo make install
使用
まず任意のフォルダの下にxxx.protoファイルを作成します.以下の通りです.protoTest.proto
syntax = "proto3";
message testBean {
int64 id = 1;
string name = 2;
}
インストールディレクトリのbinディレクトリに入り、次のコマンドを実行してJavaファイルを生成します:(ここでは/home/protobufにインストールしました)
./protoc -I=/home/pzs/protobuf/protofile --java_out=/home/pzs/protobuf/javaclass /home/pzs/protobuf/protofile/test.proto
説明:
この自動生成されたProtoTest.javaはどのような機能を提供していますか?
注意:ProtoTest.javaを使用するには、mavenに次の依存を追加します.
com.google.protobuf
protobuf-java
3.5.0
ProtoTest.testBean.Builder protoTest_builder = ProtoTest.testBean.newBuilder();
protoTest_builder.setId(10000);
protoTest_builder.setName("huxinyi");
System.out.println(protoTest_builder.getId());
System.out.println(protoTest_builder.getName());
ProtoTest.testBean.Builder protoTest_builder = ProtoTest.testBean.newBuilder();
protoTest_builder.setId(10000);
protoTest_builder.setName("huxinyi");
System.out.println(protoTest_builder.getId());
System.out.println(protoTest_builder.getName());
ProtoTest.testBean serialization = protoTest_builder.build();
ProtoTest.testBean deserialization = ProtoTest.testBean.parseFrom(serialization.toByteArray());
System.out.println(serialization.getId());
System.out.println(serialization.getName());
あるいは、シーケンス化されたデータをファイルに保存します.
ProtoTest.testBean.Builder protoTest_builder = ProtoTest.testBean.newBuilder();
protoTest_builder.setId(10000);
protoTest_builder.setName("huxinyi");
System.out.println(protoTest_builder.getId());
System.out.println(protoTest_builder.getName());
ProtoTest.testBean serialization = protoTest_builder.build();
ProtoTest.testBean deserialization = null;
OutputStream os = new FileOutputStream(new File("/home/pzs/protobuf/serializationFile"));
FileInputStream fis = new FileInputStream(new File("/home/pzs/protobuf/serializationFile"));
serialization.writeTo(os);
deserialization = ProtoTest.testBean.parseFrom(fis);
System.out.println(deserialization.getId());
System.out.println(deserialization.getName());
com.google.protobuf
protobuf-java-util
3.0.0
protobuf回転json
ProtoTest.testBean.Builder protoTest_builder = ProtoTest.testBean.newBuilder();
protoTest_builder.setId(10000);
protoTest_builder.setName("huxinyi");
String js = JsonFormat.printer().print(protoTest_builder);
System.out.println(js);
json転送protobuf(マージ操作のように)
ProtoTest.testBean.Builder protoTest_builder = ProtoTest.testBean.newBuilder();
ProtoTest.testBean.Builder formjson_build = ProtoTest.testBean.newBuilder();
protoTest_builder.setId(10000);
protoTest_builder.setName("husin");
String js = JsonFormat.printer().print(protoTest_builder);
System.out.println(js);
JsonFormat.Parser parser = JsonFormat.parser();
parser.merge(js,formjson_build);
System.out.println(formjson_build.getId());
System.out.println(formjson_build.getName());
まとめ
Protocol buffersは、構造化データをシーケンス化するための柔軟で効率的で自動化されたプロトコルであり、データを構造化、シーケンス化した後、データの理解、伝送、記憶に有利である.
Protocol buffersデータ構造は、タイプのネストを許可し、jsonと同じように強力になります.
Protocol buffersがサポートするデータ型:データ型ここではProtobufがサポートする基本データ型のテーブルを見ることができます.