Вложенный массив или объект с ключом [дубликат]

В тот момент, когда вы добавили параметр, он переставал быть переопределяющим и стал перегрузкой.

Дженерики не имеют к этому никакого отношения.

13
задан Xavier Lamorlette 21 March 2016 в 17:42
поделиться

2 ответа

Использование additionalProperties - это правильный способ описать hashamp с помощью спецификации OpenAPI (fka. Swagger), но пользовательский интерфейс Swagger пока не отображает их.

Проблема отслеживается здесь https: / /github.com/swagger-api/swagger-ui/issues/1248

Между тем вы можете использовать этот трюк, чтобы определить не требуемое свойство (default в примере ниже) тот же тип объектов карты и дать некоторый намек в описании:

swagger: "2.0"
info:
  version: 1.0.0
  title: Hashmap

paths: {}

definitions:
  MapItem:
    properties:
      firstname:
        type: string
      lastname:
        type: string
  Map:
    description: a (key, MapItem) map. `default`is an example key
    properties:
      default:
        $ref: '#/definitions/MapItem'
    additionalProperties:
      $ref: '#/definitions/MapItem'

Это описание не изменяет контракт API и улучшает документацию.

27
ответ дан Arnaud Lauret 3 September 2018 в 15:15
поделиться

Если я правильно понимаю, основная проблема заключается в том, что нет универсально принятого сопоставления JSON для карты Java, особенно когда ключ более сложный, чем строка. Я видел, что GSON использует один подход (рассматривайте ключ как объект), тогда как Джексон берет другое (сериализует ключ к строке). C #, эквивалентный Карте (Словарь), использует третий подход (рассматривая каждую запись как объект с ключом по своему усмотрению со свойствами, называемыми «ключ» и «значение»). Поскольку Swagger пытается быть агностиком для языка и сериализатора, это ставит его в невозможное положение.

2
ответ дан John Denniston 3 September 2018 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: