JSON -B / Яссон игнорирует новый JsonbConfig :: withDeserializers - PullRequest
0 голосов
/ 07 мая 2020

Я переношу проект из Jackson в Json -B (Yasson v. 1.0.7), и приведенный ниже код предназначен для иллюстрации сценария, который происходит со мной.

У меня есть json файл следующим образом:

{
  "response": {
    "accessories": {
      "accessory": [
        {
          "finance": "mandatory",
          "type": "INDIVIDUAL"
        },
        {
          "finance": "optional",
          "type": "ORIGINAL"
        },
        {
          "finance": "not",
          "type": "TRADE"
        }
      ]
    }
  }
}

Я переписываю один тест, как показано ниже:

@Test
public void testDeserialize() {

    final JsonbConfig config = new JsonbConfig()
            .withSerializers(new MySerializer())
            .withDeserializers(new MyDeserializer());

    final Jsonb jsonb = JsonbBuilder.create(config);

    final InputStream data = this.getClass().getClassLoader().getResourceAsStream("response.json");

    final Response obj = jsonb.fromJson(data, Response.class);

    final Accessories accessories = obj.getAccessories();

    assertThat(accessories.getAccessory().isEmpty(), is(false));
}

Код класса MyDeserializer:

public class MyDeserializer implements JsonbDeserializer<FType> {
    @Override
    public FType deserialize(JsonParser parser, DeserializationContext context, Type type) {
        return FType.MANDATORY;
    }
}

проблема в том, что когда я запускаю тест, десерализатор не вызывается, и свойство аксессуар объекта obj имеет значение null.

Как решить?

...