{admin": false,
"email": "student@student.com",
"firstName": "Student",
"idGroup": {
"idGroup": 1,
"name": "BlijkbaarGeenGroep",
"teacher": {
"admin": true,
"email": "1",
"firstName": "Example",
"idUser": 1,
"lastName": "User",
"teacher": true
}
}
字符串
返回以下内容。我想让Jackson做的就是无视老师。我真的不关心这个电话的老师项目。问题是我不想访问GroupEntity,因为有时候我确实需要groupinfo。
package org.hva.folivora.daomodel.user;
import com.owlike.genson.annotation.JsonIgnore;
import com.owlike.genson.annotation.JsonProperty;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonIgnoreType;
import org.hva.folivora.daomodel.global.GroupEntity;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author
*/
@Entity
@Table(name = "Student", schema = "pad_ijburg", catalog = "")
public class StudentEntity extends UserEntity implements Serializable {
private GroupEntity idGroup;
public StudentEntity(String email, String firstName, String lastName, String password, GroupEntity idGroup) {
//A student cannot be an admin or teacher. (False, False)
super(email, firstName, lastName, password, false, false);
this.idGroup = idGroup;
}
public StudentEntity() {
}
//Something like ignore all but idgroup??!
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "idGroup")
public GroupEntity getIdGroup() {
return idGroup;
}
public void setIdGroup(GroupEntity idGroup) {
this.idGroup = idGroup;
}
}
型
2条答案
按热度按时间xxslljrj1#
您有多种选择:
1.将
@JsonIgnoreProperties
放在StudentEntity
类上。参见:JsonIgnoreProperties (Jackson-annotations 2.7.4 API)。1.为
StudentEntity
编写自定义JsonSerializer
。在这里,您必须写下为输出JSON构造每个字段的代码。参见:Jackson - Custom Serializer | Baeldung。1.使用Mixin,它基本上是一个与
StudentEntity
匹配的接口。在这里,您可以在getTeacher()
方法上使用@JsonIgnore
。参见:JacksonMixInAnnotations · FasterXML/jackson-docs Wiki · GitHub。1.在
StudentEntity
类中的idGroup
属性上放置一个@JsonSerialize
。注解接受一个实现JsonSerializer
的类作为参数。但是,当(且仅当)Jackson序列化StudentEntity
的示例时,您可以指定序列化idGroup
属性的方法。(这或多或少有点像 option2.
,但实现起来要简单得多)1.编写一个与输出格式匹配的DTO类。然后将
StudentEntity
对象中的字段逐个复制到StudentEntityDTO
对象(该对象没有teacher
属性),然后让Jackson序列化DTO对象而不是原始StudentEntity
对象。这需要编写大量的代码,并且只有在输出JSON与原始对象非常不同的情况下才有用。我会选择前四个选项之一。
q43xntqr2#
把@JsonIgnore放在老师的getter上,它不会进来放json