如何使用jQuery从JSON中提取信息

我有一个JSON响应,使用JavascriptSerializer类从我的C#WebMethod格式化。 我目前从我的查询中获得以下JSON:

{"d":"[{\"Lat\":\"51.85036\",\"Long\":\"-8.48901\"},{\"Lat\":\"51.89857\",\"Long\":\"-8.47229\"}]"} 

我在下面的代码中遇到了问题,我希望有人可能会对此有所了解。 我似乎无法从返回给我的值中获取信息。 理想情况下,我希望能够读回返回给我的每一行的Lat和Long值。

以下是我目前的情况:

 $.ajax({ type: "POST", url: "page.aspx/LoadWayPoints", data: "{'args': '" + $('numJourneys').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { if (msg.d != '[]') { var lat = ""; var long = ""; $.each(msg.d, function () { lat = this['Lat']; long = this['Long']; }); alert('lat =' + lat + ', long =' + long); } } }); 

我认为这个问题与JSON的格式有关,但我可能不正确。 任何帮助都会很棒。

谢谢,Rich

发生的事情是你在JSON中的字符串中获得JSON编码。 这是多余的,但有一个解决方案,而不改变您的输出方法。

为了解决这个问题,jQuery有一个JSON解析器( $.parseJSON() ),您可以使用它来解析响应中的字符串。

所以我相信你会这样做:

 $.ajax({ type: "POST", url: "page.aspx/LoadWayPoints", data: "{'args': '" + $('numJourneys').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { if (msg.d != '[]') { var content = $.parseJSON(msg.d); var lat = ""; var long = ""; $.each(content, function () { lat = this['Lat']; long = this['Long']; }); alert('lat =' + lat + ', long =' + long); } } }); 

看起来您的JSON构建错误:

 {"d":"[{\"Lat\":\"51.85036\",\"Long\":\"-8.48901\"},{\"Lat\":\"51.89857\",\"Long\":\"-8.47229\"}]"} 

可能应该是:

 {"d":[{"Lat":"51.85036","Long":"-8.48901"},{"Lat":"51.89857","Long":"-8.47229"}]} 

注意{"d":"..."} ? 看起来你的“d”指向一个字符串,而不是一个数组。

请试试这个:

  $.each(msg.d, function () { lat = this['Lat']; long = this['Long']; }); 

在浏览JSON之后,没有MapLatPosition或MapLongPosition

HTH

我想你需要这样的东西:

 $.ajax({ type: "POST", url: "page.aspx/LoadWayPoints", data: "{'args': '" + $('numJourneys').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { $.each(msg.d, function () { var lat = ""; var long = ""; lat = this.Lat; // Lat/Long this is how you called it in your JSON responce long = this.Long; alert('lat =' + lat + ', long =' + long); }); } }); 

希望能帮助到你

  • 另外,正如上面提到的xyld ,看看你的JSON