Java 已忽略Setter上的Spring@JsonProperty
我正在尝试从POJO获取json。我只想在setter上获取Json(以便设置对象的集合) 我有一个公司班,班上有一组员工。 当我在company对象上设置employee集合时,我希望看到ObjectMapper生成的Json对象上的集合。但它不起作用 这里是我的代码和问题Java 已忽略Setter上的Spring@JsonProperty,java,json,spring,Java,Json,Spring,我正在尝试从POJO获取json。我只想在setter上获取Json(以便设置对象的集合) 我有一个公司班,班上有一组员工。 当我在company对象上设置employee集合时,我希望看到ObjectMapper生成的Json对象上的集合。但它不起作用 这里是我的代码和问题 @Entity public class Company implements Serializable { //------------------- // PROPERTY //-------
@Entity
public class Company implements Serializable {
//-------------------
// PROPERTY
//-------------------
@ManyToMany
@JsonIgnore
@JoinTable(name = "COMPANY_EMPLOYEE",
joinColumns = @JoinColumn(name="company_id", referencedColumnName="ID"),
inverseJoinColumns = @JoinColumn(name="employees_id", referencedColumnName="ID"))
private Set<Employee> employees = new HashSet<>();
//-------------------
// GETTER AND SETTER
//-------------------
@JsonIgnore
public Set<Employee> getEmployees() {
return employees;
}
@JsonProperty
public void setEmployees(Set<Employee> employees) {
this.employees = employees;
}
}
//------ In Main Application
Company company = new Company();
company.setName("Company");
//etc....... company properties
Employee employee = new Employee();
employee.setFirstName("FirstName");
//etc....... employee properties
//Create the set of employee
Set<Employee> employeeSet = new HashSet<>();
employeeSet.add(employee);
//Add the list/set of employee to the company
company.setEmployees(employeeSet);
//Expect to have the employee set here but it's empty...
ObjectMapper objectMapper = new ObjectMapper();
System.out.println(new String(objectMapper.writeValueAsBytes(company)));
@实体
公共类公司实现可序列化{
//-------------------
//财产
//-------------------
@许多
@杰索尼奥雷
@JoinTable(name=“公司\员工”,
joinColumns=@JoinColumn(name=“company\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“employees\u id”,referencedColumnName=“id”))
私有集employees=newhashset();
//-------------------
//接二连三
//-------------------
@杰索尼奥雷
公共集合getEmployees(){
返回员工;
}
@JsonProperty
公共无效集合雇员(集合雇员){
这是。雇员=雇员;
}
}
//------主要应用
公司=新公司();
公司名称(下称“公司”);
//等等。。。。。。。公司财产
员工=新员工();
雇员。setFirstName(“FirstName”);
//等等。。。。。。。员工财产
//创建员工的集合
Set employeeSet=new HashSet();
employeeSet.add(员工);
//将员工列表/集合添加到公司
公司员工集合(员工集合);
//希望在此处设置员工,但它是空的。。。
ObjectMapper ObjectMapper=新的ObjectMapper();
System.out.println(新字符串(objectMapper.writeValueAsBytes(company));
更新:
我跟随这篇文章解释了这个问题。(这正是我想要的)
提前感谢。试着像这样将JsonProperty放在employees成员身上@JsonProperty private Set employees=new HashSet();我尝试过这样做:java:annotation-type不适用于这种声明您在字段上有
@JsonIgnore
,因此您在访问器上放置的任何内容都将被忽略。不,如果您希望有一个异步机制(例如反序列化),实际上它应该是这样工作的尝试像这样将JsonProperty放在employees成员上@JsonProperty private Set employees=new HashSet();我尝试过这样做:java:annotation-type不适用于这种声明您在字段上有@JsonIgnore
,因此您在访问器上放置的任何内容都将被忽略。不,如果您希望有一个异步机制(例如反序列化),实际上它应该是这样工作的