繁体   English   中英

在 spring 启动应用程序中验证 json

[英]Validate json in spring boot application

在 Spring 引导应用程序上工作,其中一项功能将包括软件更新。 它将在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部分中每个元素的名称应以定义的前缀开头。 也可以有其他附加条件。 所以我想知道哪种方法是最好的方法。 我可以使用ObjectMapper创建一个DeviceProfile class 来提取数据,然后对每个条件进行检查,但我想知道是否有更好的方法来做到这一点。 还请告知该方法的单元测试。

Spring 带有一个名为 @JsonDeserialize 的注释,您可以在其中拥有自己的反序列化器并以您想要的方式处理它们。 以这个 class 为例:

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


    }
}

您可以像上面一样扩展 Deserializer class 并使用它反序列化您的数据,如下所示:

 @JsonDeserialize(using = CustomDeserializer.class)
    private Long Id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM