Java 格式错误的JSON:意外'<';春天
我想从JPAJava 格式错误的JSON:意外'<';春天,java,json,spring,Java,Json,Spring,我想从JPA@Entity生成json,我有 @Entity @JsonAutoDetect public class Bar implements Serializable { @Id @GeneratedValue private Integer id; private String title; //omitting other stuff } 我的控制器是 @RestController public class BarControll
@Entity
生成json
,我有
@Entity
@JsonAutoDetect
public class Bar implements Serializable {
@Id
@GeneratedValue
private Integer id;
private String title;
//omitting other stuff
}
我的控制器是
@RestController
public class BarController {
@Autowired
private BarService barService;
@RequestMapping(value = "/", method = RequestMethod.GET, headers = "Accept=application/json", produces={"application/json"})
public List<Bar> list() {
return barService.findAllBars());
}
}
@RestController
公共类酒吧控制器{
@自动连线
私人酒吧服务;
@RequestMapping(value=“/”,method=RequestMethod.GET,headers=“Accept=application/json”,products={“application/json”})
公共列表(){
return barService.findallbar());
}
}
我在浏览器中遇到此错误
邮递员
有什么问题。我怀疑get请求中的accept标头有问题。尝试将标题设置为
"Accept=*/*"
看看你得到了什么。格式错误的JSON消息来自“漂亮”的打印。单击“原始”以查看实际响应
实际响应是一个HTML负载的
406不可接受的错误(在屏幕上这样说)(因此意外的我发现了一个致命错误,即您正在获取barService.findAllBars()的条列表,您可能需要将该列表转换为json,并添加以下方法:
public static String toJSON(Object object)
{
if ( object == null ){
return "{}";
}
try {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(object);
}
catch (Exception e) {
e.printStackTrace();
}
return "{}";
}
现在做些改变
@RequestMapping(value = "/", method = RequestMethod.GET, produces={"application/json"})
public String list() {
return toJSON(barService.findAllBars());
}
希望这能起作用,如果有任何问题,请在评论会话中随意查询。在继续之前,使用JsonFormatter测试JSON。这是一个非常好的工具,可以验证JSON并显示行号可能出现的错误。在返回列表之前是否将列表序列化为JSON?我不知道如何配置Spring,但这是一个很好的工具en表示您没有安装JSON转换器。我使用的是Spring Boot,它可以为我做到这一点。@chrylis Spring Boot不是选择,那么??Spring Boot是选择。普通的启动设置不会有这个问题。Spring内置支持以更灵活、更可靠的方式处理转换。这很有帮助,但当我加入并拥有类似于@ManyToMany(cascade={CascadeType.MERGE})@JoinTable(name=“foos\u-bar”、joinColumns=@JoinColumn(name=“foos\u-id”)、inverseJoinColumns=@JoinColumn(name=“bar\u-id”)的字段私有列表foos;
i get>org.codehaus.jackson.map.JsonMappingException:未能延迟初始化角色集合:pkj.Bar.foos,无法初始化代理-无会话(通过引用链:java.util.ArrayList[0]->pkj.entity.Bar[“foos”]),如何解决这个问题one@chrylis在这种情况下,请举个例子??你能停止骚扰chrylis吗?问一次就足够了。你可能想好好看看自己的评论,然后再把别人标记为粗鲁。@ArshadAli这一切都从这里开始:。你本质上是在建议恢复使用2010年之前的Spring,而不是解决真正的问题。