google的protobuf对象转json,不能直接使用FastJson之类的工具进行转换,原因是protobuf生成对象的get方法,返回的类型有byte[],而只有String类型可以作为json的key。google有提供专门的架包,方便protobuf与json之间相互转换。方法如下:

1、添加转换用的maven依赖:

<dependency>
            <groupId>com.googlecode.protobuf-java-format</groupId>
            <artifactId>protobuf-java-format</artifactId>
            <version>1.2</version>
        </dependency>

2、protobuf转json的方法

ProtobufTest.TestRequestInfoInfo.Builder requestBuilder = ProtobufTest.TestRequestInfoInfo.newBuilder();
        requestBuilder.setMethond("方法");
        requestBuilder.setUrl("www.baidu.com");
        requestBuilder.setBody("大体上的内容");
        requestBuilder.setBodyType("字体");
        requestBuilder.setTimeOut(1000);
        ProtobufTest.TestRequestInfoInfo build = requestBuilder.build();
        System.out.println(build);

        //这里是proto转json的
        String json = JsonFormat.printToString(build);
        System.out.println(json);

3、json转protobuf的方法

新建一个Builder对象,可以将第二步的json转进到新建的requestBuilder1对象中

ProtobufTest.TestRequestInfoInfo.Builder requestBuilder1 = ProtobufTest.TestRequestInfoInfo.newBuilder();
        try {
            JsonFormat.merge(json,requestBuilder1);
        } catch (JsonFormat.ParseException e) {
            e.printStackTrace();
        }
        System.out.println(requestBuilder1);