[英]Spring-data-rest POST using Jackson Deserialization with same property name in nested objects
我正在使用spring-boot-starter-parent 1.3.3和jackson-core-asl:jar:1.9.2。 我无法创建具有相关人员的对象(组),因为该组是使用人员名称创建的。 响应如下所示。
例如:
{
"name": "Students"
"person": {"id": 1, "name: "John"}
}
响应:
{
"id" : 1,
"name" : "John",
"content" : [ ],
"links" : [ {
"rel" : "self",
"href" : "http://localhost/Group/1"
}, {
"rel" : "person",
"href" : "http://localhost/Group/1/person"
} ]
}
在上面的响应中,使用人名“ John”创建了组(名称:“ Students”)。
人.java
@Table(name = "person")
public class Person implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;
private String name;
//getter & setter
Group.java
@Table(name = "group")
public class Group implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "person_id")
private Person person;
//getter & setter
如果我将@JsonProperty()放在Group.java中,则一切正常。
例如
Group.java
@Table(name = "group")
public class Group implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "person_id")
@JsonProperty("person") // why this is needed??
private Person person;
Default json属性与字段名称相同,然后为什么这里需要此@JsonProperty批注?
对象映射器中是否存在任何配置可以解决此问题?
并且如果我将@RestResource(exported = false)代替“ @JsonProperty”,它在测试用例中也可以正常工作,但无法通过swaggerUI创建。
收到以下错误。
{“ cause”:{“ cause”:null,“ message”:“无法从字符串值(' http:// localhost:8080 / persons / 1中实例化类型[简单类型,类xx.xxx.Person]的值');在[来源:org.apache.catalina.connector.CoyoteInputStream@64bf4540;行:18,列:19]中没有单字符串构造函数/工厂方法\\ n(通过引用链:xx.xxx.Group [\\“ person \\“])”},“消息”:“无法读取文档:无法从字符串值(' http:// localhost:8080 / persons /中实例化类型[简单类型,类xx.xxx.Person]的值1 ');在[来源:org.apache.catalina.connector.CoyoteInputStream@64bf4540;没有行:18,列:19]中没有单字符串构造函数/工厂方法\\ n(通过引用链:xx.xxx。[\\“ person \\“]);嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:无法从字符串值实例化类型[简单类型,类xx.xx.Person]的值(' http:// localhost:8080 / persons / 1 ');在[来源:org.apache.catalina.connector.Coyot中没有单字符串构造函数/工厂方法\\ n eInputStream @ 64bf4540; 行:18,列:19](通过参考链:xx.xxx.Group [\\“ person \\”])“}
请提供您的想法。
在Person.java中检查类名,类名是Group而不是Person
公共类组实现了Serializable {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.