2017-01-08 12 views
1

Я пытаюсь использовать Swagger Play2 Module для создания api docs для приложения Play. Мы используем множество классов значений для некоторой дополнительной безопасности типов и читаемости кода.Swagger ApiModelProperty для класса значений

Одним из действий генерирует JSON для случая класса, как следующее:

case class MyResponse(prop1: MyValueType, prop2: MyValueType) 

, где MyValueType такого класса значение:

case class MyValueType(value: String) 

, отформатированный в JSON только в виде строки, используя обычай Format[T].

Кураж UI генерирует пример JSON код вроде этого:

{ 
    "prop1": { 
     "value": "string" 
    }, 
    "prop2": { 
     "value": "string" 
    } 
} 

в то время как я хотел бы, чтобы произвести это:

{ 
    "prop1": "string", 
    "prop2": "string" 
} 

Я попробовал аннотаций, как это, но это не как представляется, работают:

case class MyResponse(
    @ApiModelProperty(dataType="string") prop1: MyValueType, 
    @ApiModelProperty(dataType="string") prop2: MyValueType, 
) 

Любые советы о том, как это осуществить?

+0

Что не получается, если вы попробуете это? Не могли бы вы описать ошибку? – stewSquared

ответ

0

Кураж оборачивает ваш case class MyValueType в вашем case class MyResponse.

Он игнорирует ваши dataType аннотацию, и до сих пор разборе MyValueType

Пробовали ли вы с более полной аннотацией свойств? Что-то вроде:

case class MyResponse(@ApiModelProperty(
          value = "Property 1", 
          dataType="string") prop1: MyValueType, 
         @ApiModelProperty(
          value = "Property 2", 
          dataType="string") prop2: MyValueType) 

Кстати, типы данных в Swagger не чувствительны к регистру, поэтому string эквивалентно String.