2016-08-24 7 views
0

Мне нужно сопоставить экземпляр java.util.Map в JSON-схеме, которая используется для создания POJO org.jsonschema2pojo maven плагина.declare java.util.Map в json-schema

Я не нашел для этого хорошего и простого решения.

Не мог бы кто-нибудь помочь мне, пожалуйста?

Это мой фактический файл JSON-схемы

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Response", 
    "description": "A Response object", 
    "type": "object", 
    "properties": { 
     "result": { 
      "type": "string", 
      "description": "describes response status" 
     }, 
     "msg": { 
      "type": "string", 
      "description": "user msgs" 
     } 
    }, 
    "required": ["result"], 
    "additionalProperties": false 
} 

Мне нужно добавить поле "errors", который преобразуется в java.util.Map<String, String> в Java.

+0

Не могли бы вы подробнее рассказать о своем вопросе? По моему мнению, у вас есть схема JSON, как описано, и у вас есть карта, которая, вероятно, выглядит так: «errors»: {«type»: «string»}, затем вы хотите добавить карту в свой файл схемы JSON и использовать ее в jsonschema2pojo, правильно? Если у меня есть недоразумение, пожалуйста, приведи пример, спасибо! –

ответ

0

AFAIK additionalProperties выполняет эту работу. Вы можете объявить ошибки свойство типа Map<String, Object>, например, как это (это YAML сейчас):

... 
properties: 
    errors: 
    type: object 
    additionalProperties: 
     type: object 

Вы не указали тип ключей, так как это описывает JSon документ, который, естественно, имеет строки как клавиши на объектах.

вместо type: object вы также можете сделать type: string для Map<String, String> или указать другое определение, если у вас есть свой тип в качестве значений на этой карте.

+0

Привет! Спасибо за ответ. Я нашел и попробовал дополнительные свойства, но я не могу изменить имя, а затем в сгенерированное pojo, поле «дополнительные свойства» сопоставляется с @JsonIgnore, и я не хочу этого. –

+0

Хм, возможно, причуда в генераторе кода. Какое название вы имеете в виду? Можете ли вы вставить отрывок из того, что вы пробовали, и что от него получилось? – hagbard