如何在响应中隐藏一些 json?
How to hide some json in response?
我有一个基于 spring-data-rest 的模块。例如,我收到 @Entity User
的回复。
url:
http://localhost:8080/Product/rest/users
下面的回复(主要是那里有密码):
{
"_embedded" : {
"users" : [ {
"def" : "dmityushin",
"delDate" : null,
"displayDef" : "Митюшин Дмитрий Александрович",
"email" : "dmitry.mityushin@megafon.ru",
"naviDate" : "2015-10-21T12:54:08.559+0000",
"naviUser" : "admin",
"phone" : null,
"pwd" : "266810e0707d7aeb8e838308aa248f3ea116e483",
"_links" : {
"self" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308"
},
"user" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308"
},
"pscUser" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308/pscUser"
},
"pscBranch" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308/pscBranch"
}
}
}, {
"def" : "grak",
"delDate" : null,
"displayDef" : "Григорий Рак",
"email" : "grigory.rak@MegaFon.ru",
"naviDate" : "2015-10-23T11:59:19.546+0000",
"naviUser" : "admin",
"phone" : null,
"pwd" : "c7f33616778ba938272eac0ca0a3364bfc17203d",
"_links" : {
"self" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316"
},
"user" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316"
},
"pscUser" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316/pscUser"
},
"pscBranch" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316/pscBranch"
}
}
}...OTHERS
我想隐藏密码和其他一些字段。我怎样才能做到这一点?我还没有找到足够的信息。虽然看起来应该很简单。
我的实体代码:
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
@Entity
@Table(name = "psc_users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User implements Serializable {
private static final long serialVersionUID = 8885916014620036457L;
@Id
private static final String SEQUENCE_NAME = "psc_users_user_id_seq";
@Id
@GeneratedValue(...)
@GenericGenerator(...)
@Column(name = "USER_ID")
private Long userId;
@Column(name = "DEF")
private String def;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DEL_DATE")
private Date delDate;
@Column(name = "DISPLAY_DEF", length = 60)
private String displayDef;
@Column(name = "EMAIL", length = 60)
private String email;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "NAVI_DATE")
private Date naviDate;
@Column(name = "NAVI_USER")
private String naviUser;
@Column(name = "PHONE", length = 30)
private String phone;
@Column(name = "PWD", length = 40)
private String pwd;
//bi-directional many-to-one association to Branch
@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name = "BRNC_BRNC_ID", nullable = false)
private Branch pscBranch;
...some other fields
public User() {
}
...get() methods
}
抱歉我的英语不好,在此先感谢您(:
要隐藏某些字段,您可以在要隐藏的字段的 getter 上使用 @JsonIgnore,但不要忘记在该字段的 setter 上添加 @JsonSetter
我有一个基于 spring-data-rest 的模块。例如,我收到 @Entity User
的回复。
url:
http://localhost:8080/Product/rest/users
下面的回复(主要是那里有密码):
{
"_embedded" : {
"users" : [ {
"def" : "dmityushin",
"delDate" : null,
"displayDef" : "Митюшин Дмитрий Александрович",
"email" : "dmitry.mityushin@megafon.ru",
"naviDate" : "2015-10-21T12:54:08.559+0000",
"naviUser" : "admin",
"phone" : null,
"pwd" : "266810e0707d7aeb8e838308aa248f3ea116e483",
"_links" : {
"self" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308"
},
"user" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308"
},
"pscUser" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308/pscUser"
},
"pscBranch" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/308/pscBranch"
}
}
}, {
"def" : "grak",
"delDate" : null,
"displayDef" : "Григорий Рак",
"email" : "grigory.rak@MegaFon.ru",
"naviDate" : "2015-10-23T11:59:19.546+0000",
"naviUser" : "admin",
"phone" : null,
"pwd" : "c7f33616778ba938272eac0ca0a3364bfc17203d",
"_links" : {
"self" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316"
},
"user" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316"
},
"pscUser" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316/pscUser"
},
"pscBranch" : {
"href" : "http://localhost:8080/ProductCatalog/rest/2/users/316/pscBranch"
}
}
}...OTHERS
我想隐藏密码和其他一些字段。我怎样才能做到这一点?我还没有找到足够的信息。虽然看起来应该很简单。
我的实体代码:
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
@Entity
@Table(name = "psc_users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User implements Serializable {
private static final long serialVersionUID = 8885916014620036457L;
@Id
private static final String SEQUENCE_NAME = "psc_users_user_id_seq";
@Id
@GeneratedValue(...)
@GenericGenerator(...)
@Column(name = "USER_ID")
private Long userId;
@Column(name = "DEF")
private String def;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DEL_DATE")
private Date delDate;
@Column(name = "DISPLAY_DEF", length = 60)
private String displayDef;
@Column(name = "EMAIL", length = 60)
private String email;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "NAVI_DATE")
private Date naviDate;
@Column(name = "NAVI_USER")
private String naviUser;
@Column(name = "PHONE", length = 30)
private String phone;
@Column(name = "PWD", length = 40)
private String pwd;
//bi-directional many-to-one association to Branch
@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name = "BRNC_BRNC_ID", nullable = false)
private Branch pscBranch;
...some other fields
public User() {
}
...get() methods
}
抱歉我的英语不好,在此先感谢您(:
要隐藏某些字段,您可以在要隐藏的字段的 getter 上使用 @JsonIgnore,但不要忘记在该字段的 setter 上添加 @JsonSetter