我使用的是spring-boot-starter-parent 1.3.3和jackson-core-asl:jar:1.9.2。我无法创建与其关联的人的对象(组),因为该组是使用人名创建的。回复喜欢以下内容..
e.g 请求:
{
"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”创建了组(名称:“学生”)。
Person.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中,一切正常。
e.g
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;
默认的json属性与字段名称相同,那么为什么需要这个@JsonProperty注释呢?
对象映射器中是否存在解决此问题的配置?
如果我把@RestResource(exported = false)代替“@JsonProperty”,它在测试用例中工作正常,但无法通过swaggerUI创建。
收到以下错误..
{“cause”:{ “cause”:null, “message”:“无法从字符串值('http://localhost:8080/persons/1')实例化类型[simple type,class xx.xxx.Person]的值; 没有单字符串构造函数/工厂方法\ n在[来源: org.apache.catalina.connector.CoyoteInputStream@64bf4540;行:18, 专栏:19](通过参考链:xx.xxx.Group [\“person \”])“}, “message”:“无法读取文档:无法实例化类型的值 [简单类型,类xx.xxx.Person]来自String值 ( 'http://localhost:8080/persons/1');没有单一字符串 构造函数/工厂方法\ n在[来源: org.apache.catalina.connector.CoyoteInputStream@64bf4540;行:18, 专栏:19](通过参考链: xx.xxx [\ “人\”])。嵌套 异常是com.fasterxml.jackson.databind.JsonMappingException:可以 不实例化类型[simple type,class xx.xx.Person]的值 字符串值('http://localhost:8080/persons/1');没有单一字符串 构造函数/工厂方法\ n在[来源: org.apache.catalina.connector.CoyoteInputStream@64bf4540;行:18, column:19](通过参考链:xx.xxx.Group [\“person \”])“}
请提供您的想法。
答案 0 :(得分:0)
检查Person.java中的类名,类名是Group而不是Person
public class Group 实现Serializable {