将Entity对象转换为JSON

我需要将实体对象转换为json。 我放

                

到servlet配置文件,所以Spring可以自动将对象转换为json格式。 但是spring不会这样做。 我还添加了jacksonjar项目。

控制器方法

 @RequestMapping(value = "/addData.html", method = RequestMethod.POST) public @ResponseBody GroupStudent addNewGroup(@RequestBody GroupStudent group) { return group; } 

GroupStudent

 @Entity @Table(name = "GroupStudent") @NamedQueries({ @NamedQuery(name = "GroupStudent.getAllGroups", // get all groups query = "select g from GroupStudent g"), @NamedQuery(name = "GroupStudent.getGroupByName", // get group by name query = "select g from GroupStudent g where g.groupStudentNumber = :name") }) public class GroupStudent implements Serializable { public GroupStudent() {} public GroupStudent(String groupStudentNumber) { this.groupStudentNumber = groupStudentNumber; } // create connectivity with table Student private Set students = new HashSet(); @OneToMany(mappedBy = "groupStudent", cascade = CascadeType.ALL, orphanRemoval = true) public Set getStudents() { return this.students; } public void setStudents(Set students) { this.students = students; } @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "group_id_seq") @SequenceGenerator(name = "group_id_seq", sequenceName = "GroupStudent_seq", allocationSize = 1) @Column(name = "GroupStudentId") public Long getGroupStudentId() { return this.groupStudentId; } public void setGroupStudentId(Long groupStudentId) { this.groupStudentId = groupStudentId; } @Column(name = "GroupStudentNumber") public String getGroupStudentNumber() { return this.groupStudentNumber; } public void setGroupStudentNumber(String groupStudentNumber) { this.groupStudentNumber = groupStudentNumber; } // table GroupStudent fields private Long groupStudentId; private String groupStudentNumber; 

}

在浏览器中我发现我有406错误和错误窗口错误[object Object]。

如果有人知道问题是什么,我会很乐意寻求帮助。

谢谢。

@RequestMapping(produces="application/json")是你需要的,并且不要忘记在你的JS代码(而不是GET)中发出POST请求。

如果您的对象加入了其他表,那么您只能通过以下方式执行此操作。

首先,让我们注释与@JsonManagedReference,@ JsonBackReference的关系,让Jackson更好地处理这种关系:

这是“用户”实体:

 public class User { public int id; public String name; @JsonBackReference public List userItems; } 

而“项目”:

 public class Item { public int id; public String itemName; @JsonManagedReference public User owner; } 

我们现在测试新的实体:

 @Test public void givenBidirectionRelation_whenUsingJacksonReferenceAnnotation_thenCorrect() throws JsonProcessingException { User user = new User(1, "John"); Item item = new Item(2, "book", user); user.addItem(item); String result = new ObjectMapper().writeValueAsString(item); assertThat(result, containsString("book")); assertThat(result, containsString("John")); assertThat(result, not(containsString("userItems"))); } 

这是序列化的输出:

 { "id":2, "itemName":"book", "owner": { "id":1, "name":"John" } } 

注意:

@JsonManagedReference是引用的前向部分 – 正常序列化的部分。 @JsonBackReference是引用的后半部分 – 它将从序列化中省略。

引自下面的链接。 您可以访问更多。

jackson – 双向关系