Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 格式错误的JSON:意外'<';春天_Java_Json_Spring - Fatal编程技术网

Java 格式错误的JSON:意外'<';春天

Java 格式错误的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

我想从JPA
@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,而不是解决真正的问题。