Java 使用jQuery 1.9解析JSON时出错,但eval中没有错误

Java 使用jQuery 1.9解析JSON时出错,但eval中没有错误,java,json,jquery,Java,Json,Jquery,我正在重写java.Object.toString()以获取JSON,而不使用应用程序服务器端的任何JSON库 jQuery版本1.9.0和 JDK版本1.6.21 作为对以下问题的答复: var jqxhr = $.ajax(url:"/getAvailableAddress.do", type:"GET", data:"cat=PreOrder&task=getAvailableAddress"+$(form).serialize() ) .done(function(res

我正在重写java.Object.toString()以获取JSON,而不使用应用程序服务器端的任何JSON库

jQuery版本
1.9.0
和 JDK版本
1.6.21
作为对以下问题的答复:

var jqxhr = $.ajax(url:"/getAvailableAddress.do",
type:"GET",
data:"cat=PreOrder&task=getAvailableAddress"+$(form).serialize() )
    .done(function(response) { console.log(response); })
    .fail(function() { alert("error"); })
    .always(function() { alert("complete"); });
我正在从我的服务器获取以下JSON:

{
    "response": [
        {
            "alk": "123456",
            "qualifier": "golden",
            "buildingname": "Rose Appartments",
            "buildingnumber": "1245",
            "Street": "Nehru Street",
            "Town": "Kolkata",
            "Postcode": "MQK 456"
        },
        {
            "alk": "123457",
            "qualifier": "platinum",
            "buildingname": "Lily Appartments",
            "buildingnumber": "1585",
            "Street": "Modi Street",
            "Town": "Bangalore",
            "Postcode": "476 AKQ"
        }
    ]
}
当我尝试执行以下操作时:

var result = $.parseJSON(response);
alert(result.response[0].alk);
我在Jquery文件中遇到一个javascript错误:

Uncaught SyntaxError: Unexpected token o jquery-1.9.0.min.js:1
st.extend.parseJSON jquery-1.9.0.min.js:1
(anonymous function)
但是当我使用下面的代码时,我没有得到任何错误

var result = eval(response);
alert(result.response[0].alk);
jQuery解析有什么错?

如果未设置
数据类型
属性,jQuery“智能地猜测”AJAX请求的返回。它相应地解析它

jQuery.ajax() 数据类型(默认值:智能猜测(xml、json、脚本或html))

如果您返回了JSON以及正确的头,那么您将在回调中收到的数据将根据其预期类型进行预解析。不再需要解析了


另外,检查是否存在错误。您可以使用在线提供的信息。

如果来自服务器的响应包含“var response=”则从技术上讲,这不是有效的JSON。JSON只是对象表示法{}和该对象表示法中的值。前面不应该有=或var。Eval()无法捕捉到这一点,因为较大的语句是有效的JavaScript(它正在创建一个名为response的变量)

谢谢@adeneo。我通过研究您的
JSON.parse()
解决了我的问题

以下代码起作用:

var jqxhr = $.ajax(url:"/getAvailableAddress.do",
type:"GET",
data:"cat=PreOrder&task=getAvailableAddress&"+$(form).serialize() )
    .done(function(response) { 
           var result =$.parseJSON('"'+response+'"'); 
           alert(result.response[0].alk);
     })
    .fail(function() { alert("error"); })
    .always(function() { alert("complete"); });

您是如何获得JSON的?您是否尝试过
var result=JSON.parse(response)
,如果您的浏览器支持,jQuery应该在内部使用它?@JosephDreamer-我正在使用$.ajax()并将JSON记录到控制台。如果控制台显示一个对象,这就是您所拥有的,无需再次解析它。然后您需要解析它,您是否尝试将文本从控制台复制粘贴到JSON lint中并查看它是否有效,您是否尝试过JSON.parse来查看会出现哪些错误。