在 Jquery 中解析 Json 数据
Posted
技术标签:
【中文标题】在 Jquery 中解析 Json 数据【英文标题】:Parse Json data in Jquery 【发布时间】:2015-01-09 02:46:24 【问题描述】:我是 Jquery、Ajax 和 JSON 的新手。 我面临解析 Json 数据的问题。 我在***上遇到了很多问题
Parsing JSON objects for html table
Access / process (nested) objects, arrays or JSON
Parse JSON in javascript?
How could I parse through this JSON object in JQuery?
还有更多...
我仍然无法解析 Json 数据。
我的 Jquery 看起来像:
$.ajax(
/* type : "POST", */
url : "launchapptest",
/* contentType: "application/json; charset=utf-8", */
data : "processDateInput="+processDate,
dataType : "json",
async: true,
success : function(result)
var od = JSON.stringify(result) ;
var obj = JSON.parse(od);
console.log(obj.od);
console.log(obj.od.percentageCompleted);
console.log(od);
$.each(JSON.parse(od), function(idx, obj)
console.log(obj.tagName);
);
);
我已经尝试了所有的组合来解析这个数据,但是 js 控制台打印为“未定义”
我可以将 json 对象打印为:
"od": [
"dateProcessed": [
"09/11/2014",
"10/11/2014",
"11/11/2014",
"12/11/2014"
],
"percentageCompleted": 25,
"processRunning": 0,
"remainingTime": 0,
"successBatchCount": 0,
"totalBatchCount": 0
],
"processDateInput": "12/11/2014"
请帮助我如何获取 dateProcessed 数组和完成百分比。
【问题讨论】:
当我尝试每个循环时,即使只有 onw 记录,lop 也会运行两次...请帮助 【参考方案1】:试试这个代码。
$.ajax(
/* type : "POST", */
url: "launchapptest",
/* contentType: "application/json; charset=utf-8", */
data: "processDateInput=" + processDate,
dataType: "json",
async: true,
success: function (result)
var od = JSON.stringify(result);
var obj = JSON.parse(od);
$.each(obj, function (index, value)
console.log(obj[index][0].percentageCompleted);
console.log(obj[index][0].processRunning);
console.log(obj[index][0].remainingTime);
console.log(obj[index][0].successBatchCount);
console.log(obj[index][0].totalBatchCount);
console.log(obj.processDateInput);
$.each(obj[index][0].dateProcessed, function (ind, val)
console.log(val);
)
);
);
【讨论】:
控制台输出.... 25 Dashboard.jsp:127 0 Dashboard.jsp:128 0 Dashboard.jsp:129 0 Dashboard.jsp:130 0 Dashboard.jsp:131 12/11/2014 仪表板.jsp:132 09/11/2014 Dashboard.jsp:134 10/11/2014 Dashboard.jsp:134 11/11/2014 Dashboard.jsp:134 12/11/2014 Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 undefined Dashboard.jsp:127 undefined Dashboard.jsp:128 undefined Dashboard.jsp:129 undefined Dashboard.jsp:130 undefined Dashboard .jsp:130【参考方案2】:不需要解析它,因为你已经提到它是 json 你可以简单地这样做:
success: function(result)
console.log(result.od);
console.log(result.od[0].percentageCompleted);
console.log(od);
$.each(result, function(idx, obj)
console.log(obj[0].dateProcessed);
);
【讨论】:
【参考方案3】:你的 AJAX 调用的返回数据是什么
原来是这样的
"od": [
"dateProcessed": [
"09/11/2014",
"09/12/2014"
],
"percentageCompleted": 25,
"processRunning": 0,
"successBatchCount": 0,
"totalBatchCount": 0
],
"processDateInput": "12/11/2014"
你可以这样解析
var json = JSON.parse(result);
var od = json['od'];
var processDateInput = json['processDateInput'];
$.each(od, function(index, value)
console.log(value, index);
);
希望它对你有用。
【讨论】:
【参考方案4】:当您将dataType
指定为 JSON 时,jQuery 会自动为您解析它。按原样再次解析(甚至多次)会导致问题。试试这个:
success: function(result)
console.log(result.od);
console.log(result.od[0].percentageCompleted);
我不完全确定您的 $.each
循环试图做什么,因为您的对象中没有 tagName
属性。
【讨论】:
以上是关于在 Jquery 中解析 Json 数据的主要内容,如果未能解决你的问题,请参考以下文章
在 jquery 自动完成插件中,数据没有被解析为 json
通过 jQUERY 将 JSON 数据从 URL 解析为 HTML