在春季启动程序中验证json

问题描述 投票:0回答:1

在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,然后实现对每一个条件的检查,但我想知道是否有更好的方法。也请对该方法的单元测试提出建议。

json spring validation boot
1个回答
0
投票

Spring自带了一个名为@JsonDeserialize的Annotation,你可以拥有自己的Deserializers,并以你想要的方式处理它们。以这个类为例,你可以扩展Deserializer类。

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


    }
}

你可以像上面一样扩展Deserializer类 然后用它来反序列化你的数据,就像下面这样。

 @JsonDeserialize(using = CustomDeserializer.class)
    private Long Id;
© www.soinside.com 2019 - 2024. All rights reserved.