как описать Java гнездо Список в файле protobuf? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть класс 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>

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

1 Ответ

0 голосов
/ 07 марта 2019

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

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

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;
}

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

...