jackson json解析器问题:许多问题
我们使用SpringMVC和jackson解析器(用于将java对象转换为json) 我们有2个实体(具有多对多关系):jackson json解析器问题:许多问题,json,rest,spring-mvc,many-to-many,jackson,Json,Rest,Spring Mvc,Many To Many,Jackson,我们使用SpringMVC和jackson解析器(用于将java对象转换为json) 我们有2个实体(具有多对多关系): 计划 服务 项目包含服务列表,服务包含项目列表 我们有一个对控制器的ajax调用,它根据项目名称以及服务获取项目。与此同时,一切看起来都很好 问题在于jackson将服务列表解析为json时。 结果是: [{"name":"CreateAccount","hebName":"ABC","projects": [{"id":2,"name":"yesTouch","displa
[{"name":"CreateAccount","hebName":"ABC","projects":
[{"id":2,"name":"yesTouch","displayName":"ABC","authorizedUsers":[],"authorizedGroups":
[],"services":["CreateAccount",{"name":"RBMHotbill","hebName":"ABC","projects":[2]}]}]},
<b>"RBMHotbill"</b>]
[{“name”:“CreateAccount”,“hebName”:“ABC”,“projects”:
[{“id”:2,“name”:“yesTouch”,“displayName”:“ABC”,“authorizedUsers”:[],“authorizedGroup”:
[],“服务”:[“CreateCount”,{“name”:“RBMHotbill”,“hebName”:“ABC”,“projects”:[2]}]}],
“RBMHotbill”]
可能的情况是,每个服务一次完全显示,另一次仅显示其名称
以下是实体和控制器方法的片段:
@Entity
@Table (name = "GOBLIN_SERVICES")
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="name")
public class Service implements Serializable {
private static final long serialVersionUID = 8694874911004747694L;
@Id
@Column (name = "PROXY_NAME", nullable = false)
private String name;
@ManyToMany(mappedBy="services")
private List<Project> projects = new ArrayList<Project>();
@Entity
@Table (name = "GOBLIN_PROJECTS")
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Project implements Serializable {
private static final long serialVersionUID = -666638801643613543L;
@Id
@GenericGenerator(name="generator", strategy="increment")
@GeneratedValue(generator="generator")
@Column (name = "PROJECT_ID", nullable = false)
private long id;
@ManyToMany
@JoinTable(name = "GOBLIN_SERVICES_PROJECTS", joinColumns = {
@JoinColumn(name = "PROJECT_ID", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "PROXY_NAME",
nullable = false, updatable = false) })
private List<Service> services = new ArrayList<Service>();
@RequestMapping(value="/services/list", method=RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<Service> getServicesByProjectName(Locale locale, Model model, String projectName) {
// Get Project
Project project = projectDao.getProjectByName(projectName);
List<Service> services = project.getServices();
return services;
}
@实体
@表(name=“GOBLIN_服务”)
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,property=“name”)
公共类服务实现可序列化{
私有静态最终长serialVersionUID=86948749110047694L;
@身份证
@列(name=“PROXY\u name”,null=false)
私有字符串名称;
@许多(mappedBy=“服务”)
private List projects=new ArrayList();
@实体
@表(name=“GOBLIN_项目”)
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,property=“id”)
公共类项目实现可序列化{
私有静态最终长serialVersionUID=-666638801643613543L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“PROJECT\u ID”,null=false)
私人长id;
@许多
@JoinTable(name=“GOBLIN\u SERVICES\u PROJECTS”,JointColumns={
@JoinColumn(name=“PROJECT_ID”,nullable=false,updateable=false)},
inverseJoinColumns={@JoinColumn(name=“PROXY_name”,
nullable=false,updateable=false)})
private List services=new ArrayList();
@RequestMapping(value=“/services/list”,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody List getServicesByProjectName(区域设置、模型模型、字符串projectName){
//获取项目
Project=projectDao.getProjectByName(projectName);
List services=project.getServices();
返回服务;
}
有什么想法吗
谢谢,
好的。我们已经找到了解决方案。我们只需要使用: jackson休眠模块() SpringMVC甚至还有单独的配置 可在以下网址找到: (感谢)