ProtoBufのjava使用
2684 ワード
たまたまProtoを使って、メモかメモかな、
windows :
1、2つのファイル:proto.exe、 protobuf-java-2.4.1.jar
2,ひとつの工事TestPbを創立して、下でひとつのprotoファイルの件を創立して、【.proto】ファイルを保存するために用います
3、proto、exeを工事の下に置いて、
4、msg.protoファイルを作成します.
5,javaファイルの生成:proto.exeディレクトリの下:protoc --java_out=./src ./proto/msg.proto
6,copy個のテスト例
新しいファイルTestPb.java
***********************************************************
***********************************************
*******************************
Javaファイルの生成:PersonProbuf.java
*******************************
プロジェクトファイル構造:
メモはこれで終わり...そろそろ寝ようかな............
windows :
1、2つのファイル:proto.exe、 protobuf-java-2.4.1.jar
2,ひとつの工事TestPbを創立して、下でひとつのprotoファイルの件を創立して、【.proto】ファイルを保存するために用います
3、proto、exeを工事の下に置いて、
4、msg.protoファイルを作成します.
option java_package = "com.protobuftest.protobuf";
option java_outer_classname = "PersonProbuf";
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 phone = 4;
message CountryInfo {
required string name = 1;
required string code = 2;
optional int32 number = 3;
}
}
message AddressBook {
repeated Person person = 1;
}
5,javaファイルの生成:proto.exeディレクトリの下:protoc --java_out=./src ./proto/msg.proto
6,copy個のテスト例
新しいファイルTestPb.java
***********************************************************
package com.protobuftest.protobuf;
import java.util.List;
import com.google.protobuf.InvalidProtocolBufferException;
import com.protobuftest.protobuf.PersonProbuf;
import com.protobuftest.protobuf.PersonProbuf.Person;
import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;
public class TestPb {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
builder.setEmail("[email protected]");
builder.setId(1);
builder.setName("TestName");
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));
Person person = builder.build();
byte[] buf = person.toByteArray();
try {
Person person2 = PersonProbuf.Person.parseFrom(buf);
System.out.println(person2.getName() + ", " + person2.getEmail());
List lstPhones = person2.getPhoneList();
for (PhoneNumber phoneNumber : lstPhones) {
System.out.println(phoneNumber.getNumber());
}
} catch (InvalidProtocolBufferException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(buf);
}
}
***********************************************
*******************************
Javaファイルの生成:PersonProbuf.java
*******************************
プロジェクトファイル構造:
メモはこれで終わり...そろそろ寝ようかな............