在开发中,我们有时会遇到一种情况,就是请求接口返回的json字段会多于我们实体类中的属性。这种情况在前后端分离的项目中尤为常见。
简单来说,json字段多于实体字段意味着我们需要在实体类中忽略掉某些json字段,否则会在反序列化时抛出异常。
以下是一个示例:
public class User { private String name; private int age; private String address; // getter and setter } // API 返回的 JSON 字符串 { "name": "小明","age": 18,"address": "北京市" "email": "[email protected]","phone": "13888888888" } // 反序列化时的异常 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "email" (class User),not marked as ignorable (one kNown property: "address"])
在上面的示例中,API返回的json中包含了 实体类中没有的email和phone字段,而默认情况下jackson会强制要求实体类中的属性与JSON字段一一对应。此时我们需要显式地告诉jackson忽略掉其中的字段。
在Spring Boot应用中,我们可以使用@JsonIgnoreProperties注解来实现字段的忽略。例如:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties(ignoreUnkNown = true) public class User { private String name; private int age; private String address; // getter and setter }
在上面的示例中,我们使用了JsonIgnoreProperties注解,并将它的一个属性ignoreUnkNown设置为了true。这样一来,jackson在反序列化时就会忽略掉json字符串中未知的字段。
总之,当json字段多于实体字段时,我们需要显式地告诉jackson忽略掉未知的字段。这样才能顺利地反序列化json字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。