Подтвердите json в приложении весенней загрузки - PullRequest
0 голосов
/ 27 апреля 2020

Работая с приложением Spring Boot, одна из функций будет включать обновление программного обеспечения. Это будет описано в JSON следующим образом:

{
 "DeviceProfile": {
    "firmware": {
        "name": "firmware_a",
        "version": "2.0.24.3",
        "url": " ",
        "isPatch": true,
        "patchdependency":  "1.0.0"
    },
    "software": [
        {
            "name": "mySoftware1",
             "version": "1.0.0",
               "url": "http://www.example.com",
             "action": "install"
        },
        {
            "name": "mySoftware2",
            "version": "1.1.0",
            "url": "http://www.example.com",
            "action": "install"
        },
        {
            "name": "mySoftware3",
            "version": "2.0.0",
            "url": "http://www.example.com",
            "action": "install"
        }
    ],
    "configuration": [
        {
            "url": "https://www.examples.com",
            "type": "myConfigType_1",
            "name": "myConfig_1”
        },
        {
            "url": "https://www.examples.com",
            "type": " myConfigType_2",
        "name": "myConfig_2”
        }
    ]
 }
}

Есть несколько условий, которые должны быть выполнены - список «конфигурации» должен содержать ровно один элемент и его имя должно быть определенной строкой , Имя каждого элемента в части software должно начинаться с определенного префикса. Могут быть и другие дополнительные условия. Так что мне было интересно, какой это лучший способ сделать это. Я могу создать класс DeviceProfile для извлечения данных, используя ObjectMapper, а затем реализовать проверку для каждого отдельного условия, но мне было интересно, есть ли лучший способ сделать это. Пожалуйста, сообщите также для модульного тестирования подхода.

1 Ответ

0 голосов
/ 27 апреля 2020

Spring поставляется с аннотацией @JsonDeserialize, где вы можете иметь свои собственные десериализаторы и обрабатывать их так, как хотите. Возьмем этот класс в качестве примера:

public class CustomDeserializer extends JsonDeserializer<Long> {
    @Override
    public Long deserialize(JsonParser jsonParser, DeserializationContext 
         deserializationContext) throws IOException {


    }
}

Вы можете расширить класс десериализатора, как описано выше, и использовать его для десериализации ваших данных, как показано ниже:

 @JsonDeserialize(using = CustomDeserializer.class)
    private Long Id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...