Как мне представить неназванный список объектов с protobuf? - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь использовать REST API с Spring RestTemplate, вот что я хочу сделать:

    public ResponseEntity<OfficeProto.Offices> getAllOffices() {
        return restTemplate.exchange(uri, HttpMethod.GET, httpEntity, new ParameterizedTypeReference<OfficeProto.Offices>() {});
    }

Ниже показано, как выглядит исходный json, как я представляю неназванноесписок в протобуф?

[
  {
    "name": "Office 1"
  },
  {
    "name": "Office 2"
  }
]

Вот так выглядит мой .proto файл

syntax = "proto3";

option java_outer_classname = "OfficeProto";

message Office {
 string name = 1;
}

message Offices {
    repeated Office office = 1;
}

Я получаю следующую ошибку:

org.springframework.web.client.RestClientException: Error while extracting response for type [class com.findwise.connect.OfficeProto$Offices] and content type [application/json]; nested exception is com.googlecode.protobuf.format.JsonFormat$ParseException: 1:1: Expected "{".

1 Ответ

1 голос
/ 02 апреля 2019

Похоже, вы пытаетесь использовать универсальный JSON API с использованием protobuf. Однако protobuf не является сериализатором JSON общего назначения - его поддержка JSON очень самоуверенная , и мнения, которые он имеет, не подходят для вашего сценария.

Итак: в этом случае не пытайтесь использовать protobuf. Используйте более общий инструмент JSON.

В качестве общего руководства для облегчения жизни вы должны использовать protobuf в качестве синтаксического анализатора, только если он был записан protobuf (и вам просто понадобился текстовый API, а не двоичный API, который предпочитает protobuf) , Таким образом, вы знаете, что мнения будут по крайней мере совпадать.

...