2012-02-07 70 views
0

我想从使用javascript/jquery的服务器解析JSON响应。这是字符串:使用javascript解析JSON

{ 
"status": { 
    "http_code": 200 
}, 
"contents": "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\nDate: Tue, 07 Feb 2012 08:14:38 GMT\r\nServer: localhost\r\n\r\n {\"response\": \"true\"} " 
} 

我需要获得response值。

以下是我在我的岗位查询成功功能正在尝试:

  success: function(data) { 
      var objstring = JSON.stringify(data); 
      var result = jQuery.parseJSON(JSON.stringify(data)); 
      alert(objstring); 

      var result1 = jQuery.parseJSON(JSON.stringify(result.contents[0])); 
      alert(result1.response); 

      alert(data.contents[0].response); 

但到目前为止,没有什么我试图返回正确的结果”我不断收到undefined,然而objstring内容是正确的并包含JSON字符串。

+0

你有在多个浏览器测试这一点,仍然收到同样的“未定义”字符串? – James 2012-02-07 08:46:35

回答

2

好像JSON响应本身含有JSON内容。根据您调用jQuery.post()方法的方式,您将获得一个字符串或一个JSON对象。对于第一种情况,使用jQuery.parseJSON()将字符串转换成JSON对象:

data = jQuery.parseJSON(theAboveMentionedJsonAsString); 

接下来,让contents物业内所有第一\r\n\r\n后:

var contentBody = data.contents.split("\r\n\r\n", 2)[1]; 

最后,转换该字符串JSON并获得所需的值:

var response = jQuery.parseJSON(contentBody).response; 
// "true" 
4

首先,将dataType设置为json。然后data将包含指定数据的对象:

dataType: 'json', 
success: function(data) { 
    alert(data.status.http_code); 
    alert(data.contents); 
} 

the API要了解这些特性实现更多的解释。它也可能帮助您使用Javascript控制台,因此您可以使用console.log,这是一个比alert更强大的工具。

+0

这不会帮助获取响应值,转义代码是否阻止我阅读它。这是行不通的:data.contents.response – danielbeard 2012-02-07 08:38:27

+0

@danielbeard我没有看到。我的天哪,这是一个荒谬的API。 – lonesomeday 2012-02-07 09:24:31

0

试试这样说:

var objstring=JSON.stringify(data); 
var result=JSON.parse(objstring); 

alert("http code:" + result.status.http_code); 
alert("contents:" + result.contents);