-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Milestone
Description
I could still encounter the problem that JsonProperty.Access.READ_ONLY
not work. I have read #1805 , and my jackson.databind version is 2.9.5. I also checked 2.9.6.
I have reduced my example as:
//AppTest.java
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
public class AppTest {
@Test
public void test() throws Exception {
String data ="{\"security_group_rules\": [{\"id\": \"id1\"}, {\"id\": \"id2\"}, {\"id\": \"id3\"}, {\"id\": \"id4\"}]}";
ObjectMapper mapper = new ObjectMapper();
SecurityGroup sg = mapper.readValue(data, SecurityGroup.class);
System.out.println(mapper.writeValueAsString(sg));
}
}
//SecurityGroup.java
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Lists;
import java.util.List;
public class SecurityGroup {
private List<SecurityGroupRule> securityGroupRules;
public SecurityGroup() {
this.securityGroupRules = Lists.newArrayList();
}
@JsonProperty(value="security_group_rules", access=JsonProperty.Access.READ_ONLY)
public List<SecurityGroupRule> getSecurityGroupRules() {
return securityGroupRules;
}
public SecurityGroup setSecurityGroupRules(List<SecurityGroupRule> securityGroupRules) {
this.securityGroupRules = securityGroupRules;
return this;
}
}
//SecurityGroupRule.java
import com.fasterxml.jackson.annotation.JsonProperty;
public class SecurityGroupRule {
private String id;
public SecurityGroupRule() {
}
@JsonProperty
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
I hope securityGroupRules
won't be deserialized but it still is. If I change JsonProperty(value="security_group_rules", access=JsonProperty.Access.READ_ONLY)
to JsonIgnoreProperties(value="security_group_rules", allowGetters=true)
as metioned in #1805, it throws UnrecognizedPropertyException
instead of printing {"security_group_rules":[{"id":"id1"},{"id":"id2"},{"id":"id3"},{"id":"id4"}]}
. I'd like the former behaviour since in project I can set FAIL_ON_UNKNOWN_PROPERTIES
to avoid the error.
Metadata
Metadata
Assignees
Labels
No labels