У меня есть данные json, которые выглядят следующим образом:
{
"hits":{
"runid2":{
"RequestId":"SR0273",
"usecasedetails":[
{
"Responsetime":{
"U1_test_AddProduct_10_Menu":"348",
"U1_test_05_ClickAerin":"590",
"U1_test_AddProduct_06_SelectProduct":"1394",
"U1_test_AddProduct_08_OpenBasket":"3620"
},
"referenceid":17
},
{
"Responsetime":{
"App-Launch":"2047"
},
"referenceid":18
}
],
"DeviceName":"[Nexus 6P2]"
},
"runid1":{
"RequestId":"SR0271",
"usecasedetails":[
{
"Responsetime":{
"U1_test_AddProduct_10_Menu":"3480",
"U1_test_05_ClickAerin":"5900",
"U1_test_AddProduct_06_SelectProduct":"139",
"U1_test_AddProduct_08_OpenBasket":"362"
},
"referenceid":17
},
{
"Responsetime":{
"App-Launch":"2047"
},
"referenceid":18
}
],
"DeviceName":"[Nexus 6P1]"
}
}
}
Я использовал приведенный ниже код для анализа данных json:
$.getJSON("comparison.json", function(json) {
var Hits= json.hits;
var runIdArr =[];
var runIdcount = Object.keys(Hits).length;
var count = Object.keys(Hits).length;
//alert("count = "+ count);
var usecaseCount =Hits.runid1.usecasedetails.length;
var devicename,usecasedetails,responsetime,tablerow;
for(var i = 0; i<usecaseCount ;i++)
{
var tableHeadingrow = document.createElement('tr');
var tablerow = document.createElement('tr');
var tablerow1= document.createElement('tr');
var tablerow2= document.createElement('tr');
var tablerowPara= document.createElement('tr');
var tablerow3= document.createElement('tr');
var tableHeadingheader=document.createElement('th');
var tableheader=document.createElement('th');
var tableheader1=document.createElement('th');
var tableheader2=document.createElement('th');
var tableheaderPara=document.createElement('th');
tableHeadingheader.style.textAlign="center";
tableheader.style.textAlign="center";
var usecasedetails = Hits.runid1.usecasedetails ;
var usecasename = usecasedetails[i].usecasename;
tableHeadingheader.setAttribute("style","font-weight: bold;color:#3c9adc");
tableHeadingheader.innerHTML=usecasename+" ResponseTime Summary";
tableheader.innerHTML="Report#";
tableheader1.innerHTML="DeviceName";
tableheader2.innerHTML="UseCase";
tableheaderPara.innerHTML="Transaction Name";
if(i==0)
{
tablerow.appendChild(tableheader);
tablerow1.appendChild(tableheader1);
}
tableHeadingrow.appendChild(tableHeadingheader);
tablerow2.appendChild(tableheader2);
tablerowPara.appendChild(tableheaderPara);
for(var j=1; j<=count; j++)
{
var RequestId = Hits["runid"+j].RequestId;
var devicename = Hits["runid"+j].DeviceName;
var usecasedetails = Hits["runid"+j].usecasedetails ;
var usecasename = usecasedetails[i].usecasename;
var Responsetime=(usecasedetails[i].Responsetime);
var resTimeLength = Object.keys(Responsetime).length;
Object.keys(Responsetime).forEach(function(key)
{
if(j==1)
{
var tableheader3=document.createElement('tr');
tableheader3.innerHTML=key;
//alert("hi saket"+key);
tablerow3.appendChild(tableheader3);
}
});
var k=1;
var ss = document.createElement('td');
Object.keys(Responsetime).forEach(function(key)
{
// alert("the value of k is "+ k)
value = Responsetime[key];
var tablecolum3=document.createElement('tr');
if(value<5000)
{
// document.getElementById('launchpanel2').className+= 'panel panel-green';
tablecolum3.innerHTML=value;
}
else if((value>5000)&&(value<=6000))
{
tablecolum3.setAttribute("style","color:#ffbf00;font-weight:bold");
tablecolum3.innerHTML=value;
}
else if(value>6000)
{
tablecolum3.setAttribute("style","color:#FF0000;font-weight:bold");
tablecolum3.innerHTML=value;
}
// alert("hi saket 2nd time");
ss.appendChild(tablecolum3);
// tablerow3.appendChild(saket);
k++;
});
tablerow3.appendChild(ss);
var tableHeader=document.createElement('th');
var tableHeader1=document.createElement('th');
var tableSubHeader=document.createElement('th');
tableHeader.innerHTML=RequestId;
tableHeader1.innerHTML=devicename;
tableSubHeader.innerHTML=usecasename;
if(i==0)
{
tablerow.appendChild(tableHeader);
tablerow1.appendChild(tableHeader1);
}
tablerow2.appendChild(tableSubHeader);
}
document.getElementById("responseTableoady").appendChild(tableHeadingrow);
document.getElementById("responseTableoady").appendChild(tablerow);
document.getElementById("responseTableoady").appendChild(tablerow1);
// document.getElementById("responseTableoady").appendChild(tablerow2);
document.getElementById("responseTableoady").appendChild(tablerowPara);
document.getElementById("responseTableoady").appendChild(tablerow3);
}
});
Все мои имена транзакций и значения добавляютсяв тот же ряд.Как показано на рисунке ниже:
В конечном счете, я хотел бы создать уникальную строку для каждой транзакции и соответствующее время отклика и отсортировать имя транзакции в порядке возрастания. Возможно, я делаю это неправильно, поэтому, если есть более простой способ достижения этой конечной цели, я открыт для идей.Заранее спасибо.