目前我遇到了JsonFormater.printer将long(fixed64)值作为字符串打印在JSON中的行为。
有没有办法/选项设置JsonFormater.printer不进行此转换(Long(fixed64) -> String in Json)?
该Json由Java应用程序使用,表示fixed64为整数在JSON中对于Java不应该是问题。
以下是代码:
在data.proto中:
syntax = "proto2";
message data{
required fixed64 user_id = 1;
required int32 member_id = 2
}
以下是Java代码,文件格式为*.pb.gz
import com.google.protobuf.util.JsonFormat;
.......
//print data in JSON format
final InputStream input = new GZIPInputStream(new FileInputStream(pathToFile));
Message m;
m = defaultMsg.getParserForType().parseDelimitedFrom(input));
String jsonString = JsonFormat.printer().preservingProtoFieldNames().omittingInsignificantWhitespace().print(m);
生成的Java类:Data.java(由protoc 2.6.1生成)
...
private long userId_;
...
private int memberId_;
...
期望结果:
{"user_id":6546585813946021349,"member_id":7521}
实际结果:
{"user_id":"6546585813946021349","member_id":7521}
在json中,user_id是字符串,但我希望它是整数。
谢谢 David