как описать список гнезд Java в файле protobuf?

У меня есть класс Java, включите поле списка вложений, например:

private List<List<List<Integer>>> data;

но как это описать в файле protobuf? Пробую так, но не получается

repeated repeated repeated double data = 1;

==============обновлено======================

Я попробовал ответ Илкера Коркута, но когда я хочу преобразовать json в protobuf, это не удалось. мой json, как показано ниже:

{"data":[[[139,35],[138,34]]]}

и мой файл protobuf, как показано ниже:

syntax = "proto3";
option java_package = "com.y.probuf";

message A {
    message B{
        message C {
            repeated int32 score = 1;
        }
        repeated C item = 1;
    }
    repeated B data = 1;
}

используйте код Java для преобразования json в protobuf:

User.A.Builder builder = User.A.newBuilder();
JsonFormat.parser().merge(s,builder);
User.A a = builder.build();
System.out.println(a.toString());

он выдает исключение "Ожидать объект сообщения, но получил: [[139,35],[138,34]]"

файл maven, как показано ниже:

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.6.1</version>
</dependency>
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java-util</artifactId>
    <version>3.6.1</version>
</dependency>

пожалуйста, помогите мне !


person wang8118    schedule 07.03.2019    source источник


Ответы (1)


Согласно документам protobuf; вам нужно создать вложенные типы сообщений, чтобы при необходимости хранить ваши данные во вложенном списке.

Есть пример, который я подготовил;

syntax = "proto3";
package protobuf;

option java_package = "mypackage";
option java_outer_classname = "MyObject";

message A {
    message B {
        message C {
            repeated string name = 1;
        }
        repeated C c = 1;
    }
    repeated B b = 1;
}

Конечно, вы можете определить внешние типы сообщений и передать их как свойство родительского сообщения.

person İlker Korkut    schedule 07.03.2019
comment
@ wang8118 мой ответ был просто примером, можете ли вы настроить размер вложенности в соответствии с вашими требованиями? - person İlker Korkut; 08.03.2019