Javascript 无法解析由 ObjectMapper 对象生成的 JSON
Javascript unable to parse JSON generated by a ObjectMapper object
在我当前的 spring 项目中,我有这个 Javascript/JQuery 代码来解析由我的控制器生成的 JSON 字符串:
<script th:if="${list}" th:inline="javascript">
/*<![CDATA[*/
$(document).ready(function(){
load_content(<url to json string>, <target on html code>);
function load_content(list, target) {
$.get(list, function(json_string){
var json = jQuery.parseJSON( json_string );
$.each(json, function(index, item){
...
});
});
}
});
/*]]>*/
</script>
控制器中生成此 JSON 的方法是:
@RequestMapping("/list.json")
@ResponseBody
public String list(@RequestParam(value="orderby", required=false) String orderby, @RequestParam(value="groupby", required=false) String groupby) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(serv.select(orderby, groupby));
}
有人知道我在这里缺少什么吗? com.fasterxml.jackson.databind.ObjectMapper
的实现中可能存在一些错误?如果是这样,如何解决它?
更新
json 字符串:
[{"id":1,"login":"klebermo","senha":"...","nome":"kleber","sobrenome":"mota","email":"kleber@mail.com","cesta":null,"listas":[],"pedidos":[],"credenciais":[{"id":1,"nome":"categoria","autorizacoes":[{"id":1,"nome":"categoria","authority":"categoria"},{"id":2,"nome":"insert_categoria","authority":"insert_categoria"},{"id":3,"nome":"update_categoria","authority":"update_categoria"},{"id":4,"nome":"delete_categoria","authority":"delete_categoria"}],"expirationDate":null},{"id":2,"nome":"produto","autorizacoes":[{"id":5,"nome":"produto","authority":"produto"},{"id":6,"nome":"insert_produto","authority":"insert_produto"},{"id":7,"nome":"update_produto","authority":"update_produto"},{"id":8,"nome":"delete_produto","authority":"delete_produto"}],"expirationDate":null},{"id":3,"nome":"pagina","autorizacoes":[{"id":9,"nome":"pagina","authority":"pagina"},{"id":10,"nome":"insert_pagina","authority":"insert_pagina"},{"id":11,"nome":"update_pagina","authority":"update_pagina"},{"id":12,"nome":"delete_pagina","authority":"delete_pagina"}],"expirationDate":null},{"id":4,"nome":"usuario","autorizacoes":[{"id":13,"nome":"usuario","authority":"usuario"},{"id":14,"nome":"insert_usuario","authority":"insert_usuario"},{"id":15,"nome":"update_usuario","authority":"update_usuario"},{"id":16,"nome":"delete_usuario","authority":"delete_usuario"}],"expirationDate":null},{"id":5,"nome":"admin","autorizacoes":[{"id":17,"nome":"admin","authority":"admin"},{"id":18,"nome":"settings","authority":"settings"}],"expirationDate":null}],"expirationDate":null,"locked":false,"enabled":true,"authorities":[{"id":1,"nome":"categoria","authority":"categoria"},{"id":2,"nome":"insert_categoria","authority":"insert_categoria"},{"id":3,"nome":"update_categoria","authority":"update_categoria"},{"id":4,"nome":"delete_categoria","authority":"delete_categoria"},{"id":5,"nome":"produto","authority":"produto"},{"id":6,"nome":"insert_produto","authority":"insert_produto"},{"id":7,"nome":"update_produto","authority":"update_produto"},{"id":8,"nome":"delete_produto","authority":"delete_produto"},{"id":9,"nome":"pagina","authority":"pagina"},{"id":10,"nome":"insert_pagina","authority":"insert_pagina"},{"id":11,"nome":"update_pagina","authority":"update_pagina"},{"id":12,"nome":"delete_pagina","authority":"delete_pagina"},{"id":13,"nome":"usuario","authority":"usuario"},{"id":14,"nome":"insert_usuario","authority":"insert_usuario"},{"id":15,"nome":"update_usuario","authority":"update_usuario"},{"id":16,"nome":"delete_usuario","authority":"delete_usuario"},{"id":17,"nome":"admin","authority":"admin"},{"id":18,"nome":"settings","authority":"settings"}],"accountNonExpired":true,"accountNonLocked":false,"credentialsNonExpired":true,"username":"klebermo","password":"..."}]
错误(在浏览器控制台中显示):
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
唯一可能的答案是你的 JSON 不是字符串,看起来你不需要解析任何东西,因为它已经是包含对象
的数组
在我当前的 spring 项目中,我有这个 Javascript/JQuery 代码来解析由我的控制器生成的 JSON 字符串:
<script th:if="${list}" th:inline="javascript">
/*<![CDATA[*/
$(document).ready(function(){
load_content(<url to json string>, <target on html code>);
function load_content(list, target) {
$.get(list, function(json_string){
var json = jQuery.parseJSON( json_string );
$.each(json, function(index, item){
...
});
});
}
});
/*]]>*/
</script>
控制器中生成此 JSON 的方法是:
@RequestMapping("/list.json")
@ResponseBody
public String list(@RequestParam(value="orderby", required=false) String orderby, @RequestParam(value="groupby", required=false) String groupby) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(serv.select(orderby, groupby));
}
有人知道我在这里缺少什么吗? com.fasterxml.jackson.databind.ObjectMapper
的实现中可能存在一些错误?如果是这样,如何解决它?
更新
json 字符串:
[{"id":1,"login":"klebermo","senha":"...","nome":"kleber","sobrenome":"mota","email":"kleber@mail.com","cesta":null,"listas":[],"pedidos":[],"credenciais":[{"id":1,"nome":"categoria","autorizacoes":[{"id":1,"nome":"categoria","authority":"categoria"},{"id":2,"nome":"insert_categoria","authority":"insert_categoria"},{"id":3,"nome":"update_categoria","authority":"update_categoria"},{"id":4,"nome":"delete_categoria","authority":"delete_categoria"}],"expirationDate":null},{"id":2,"nome":"produto","autorizacoes":[{"id":5,"nome":"produto","authority":"produto"},{"id":6,"nome":"insert_produto","authority":"insert_produto"},{"id":7,"nome":"update_produto","authority":"update_produto"},{"id":8,"nome":"delete_produto","authority":"delete_produto"}],"expirationDate":null},{"id":3,"nome":"pagina","autorizacoes":[{"id":9,"nome":"pagina","authority":"pagina"},{"id":10,"nome":"insert_pagina","authority":"insert_pagina"},{"id":11,"nome":"update_pagina","authority":"update_pagina"},{"id":12,"nome":"delete_pagina","authority":"delete_pagina"}],"expirationDate":null},{"id":4,"nome":"usuario","autorizacoes":[{"id":13,"nome":"usuario","authority":"usuario"},{"id":14,"nome":"insert_usuario","authority":"insert_usuario"},{"id":15,"nome":"update_usuario","authority":"update_usuario"},{"id":16,"nome":"delete_usuario","authority":"delete_usuario"}],"expirationDate":null},{"id":5,"nome":"admin","autorizacoes":[{"id":17,"nome":"admin","authority":"admin"},{"id":18,"nome":"settings","authority":"settings"}],"expirationDate":null}],"expirationDate":null,"locked":false,"enabled":true,"authorities":[{"id":1,"nome":"categoria","authority":"categoria"},{"id":2,"nome":"insert_categoria","authority":"insert_categoria"},{"id":3,"nome":"update_categoria","authority":"update_categoria"},{"id":4,"nome":"delete_categoria","authority":"delete_categoria"},{"id":5,"nome":"produto","authority":"produto"},{"id":6,"nome":"insert_produto","authority":"insert_produto"},{"id":7,"nome":"update_produto","authority":"update_produto"},{"id":8,"nome":"delete_produto","authority":"delete_produto"},{"id":9,"nome":"pagina","authority":"pagina"},{"id":10,"nome":"insert_pagina","authority":"insert_pagina"},{"id":11,"nome":"update_pagina","authority":"update_pagina"},{"id":12,"nome":"delete_pagina","authority":"delete_pagina"},{"id":13,"nome":"usuario","authority":"usuario"},{"id":14,"nome":"insert_usuario","authority":"insert_usuario"},{"id":15,"nome":"update_usuario","authority":"update_usuario"},{"id":16,"nome":"delete_usuario","authority":"delete_usuario"},{"id":17,"nome":"admin","authority":"admin"},{"id":18,"nome":"settings","authority":"settings"}],"accountNonExpired":true,"accountNonLocked":false,"credentialsNonExpired":true,"username":"klebermo","password":"..."}]
错误(在浏览器控制台中显示):
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
唯一可能的答案是你的 JSON 不是字符串,看起来你不需要解析任何东西,因为它已经是包含对象
的数组