У меня есть два следующих класса:
public class MyChild
{
@JsonProperty
public int x;
}
public class MyTest
{
public void MyChild() {}
@JsonSerialize(using = MapValueSerializer.class)
private Map<String, MyChild> childs = new LinkedHashMap<>();
}
, где я хочу, чтобы дочерние элементы сериализировались как массив MyChild
, а не как карта (только значения). Таким образом, я использую следующий пользовательский сериализатор:
public class MapValueSerializer extends StdSerializer<Map<String, ?>>
{
protected MapValueSerializer()
{
this(null);
}
protected MapValueSerializer(Class<Map<String, ?>> t)
{
super(t);
}
@Override
public void serialize(Map<String, ?> value, JsonGenerator gen, SerializerProvider provider) throws IOException
{
provider.defaultSerializeValue(value.values(), gen);
}
}
Когда я теперь использую JsonSchemaGenerator
для генерации схемы из MyTest
, я получаю следующее:
{
"type" : "object",
"id" : "urn:jsonschema:com:myclasses:MyTest",
"properties" : {
"childs" : {
"type" : "any"
}
}
}
Ноchilds должен быть не типа "any", а типа "object". Если я удаляю сериализатор, тип "объект". Нужно ли что-то добавить, чтобы генератор схемы знал об этом типе?