В настоящее время я сталкиваюсь с поведением JsonFormater.printer, печатающим значение long (fixed64) как String в 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}
user_id - это строка в json, но я хочу, чтобы она была целым числом
Спасибо
David