如果JPA属性不存在于json响应中,则忽略该属性;如果它存在于json中,则进行转换

时间:2018-06-26 07:43:38

标签: java json spring jpa

我从上游响应中得到一个Json响应,如下所示。

{
    "fieldone": {
    "header": {
    "requestId": "1234",
    "applicationName": "office",
    "status": "SUCCESS"
    },
    "lineLevel": [{
    "ou": "1025854560",
    "status": "REJECT"
    }]
    }
}

LineLevel字段每次可能会或可能不是JSON响应的一部分。我们可能会或可能不会。当我们未获取它时会导致问题。解决它,我尝试了在属性级别使用@jsonIgnore但忽略了它当我们获得该特定字段作为响应的一部分时的字段。

在类级别尝试过@JsonIgnoreProperties,但是当Json响应中不存在相应属性时会引起问题

可以提供任何解决方案的指针。无论Json响应中是否存在LineLevel属性,我都应继续进行操作

2 个答案:

答案 0 :(得分:0)

您可以使用

@JsonInclude(Include.NON_NULL)
LineLevel lineLevel

仅当该字段不为null时,它将转换此字段。

您可以获取示例here

答案 1 :(得分:0)

谨记single responsibility principle,我强烈建议您对持久性实体和映射来自上游服务器的JSON响应使用不同的类。

如果需要考虑将一个对象映射到另一个对象的样板代码,请使用mapping frameworks,例如MapStruct