在spring-boot应用程序中验证json



在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部分中每个元素的名称应以定义的前缀开头。还可能存在其他附加条件。所以我想知道哪种方法是最好的。我可以使用ObjectMapper创建一个DeviceProfile类来提取数据,然后对每个条件进行检查,但我想知道是否有更好的方法。还请为该方法的单元测试提供建议。

Spring附带了一个名为@JsonDeserialize的Annotation,您可以在其中拥有自己的反序列化程序,并按照自己想要的方式处理它们。以这个类为例:

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

}
}

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

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

相关内容

  • 没有找到相关文章

最新更新