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

时间:2015-10-04 03:41:56

标签: java json spring

我想从JPA json生成@Entity,我有

@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());
    }

}

我在浏览器中遇到此错误

HTTP 406

和邮差 Postman Malformed JSON

它有什么问题。

3 个答案:

答案 0 :(得分:5)

“格式错误的JSON”消息来自“漂亮”打印。单击“原始”以查看实际响应。

实际响应是406 Not Acceptable错误(在屏幕上显示),其中包含HTML的有效内容(因此来自“Pretty”的意外<)表示请求已被服务器拒绝

headers = "Accept=application/json"中删除@RequestMappingproduces={"application/json"}已经告诉Spring只调用此方法,如果application/json是可接受的响应,可能是,但标题可能是*.*,或更复杂的内容,如{{1}两个都允许text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

当然,由于这可能是期待JSON的AJAX调用,因此仅在application/json值中列出application/json。如果不是这样,请检查执行AJAX调用的代码。

答案 1 :(得分:1)

我怀疑你的获取请求中的接受标题有问题。尝试将标题设置为

"Accept=*/*"

看看你得到了什么。

答案 2 :(得分:0)

使用JsonFormatter https://jsonformatter.curiousconcept.com/测试JSON,然后再继续。它是一个非常好的工具,可以验证JSON,并通过行号显示可能的错误。