Javascript 获取json格式的表数据
大家好,我正在尝试获取json格式的表数据,这是我的表Javascript 获取json格式的表数据,javascript,arrays,json,html,Javascript,Arrays,Json,Html,大家好,我正在尝试获取json格式的表数据,这是我的表 <table> <thead> <tr> <th>srno</th> <th>name</th> <th>email</th> </tr> </thead> <tbody> <tr> <td&
<table>
<thead>
<tr>
<th>srno</th>
<th>name</th>
<th>email</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Jhon One</td>
<td>Doe one</td>
</tr>
<tr>
<td>2</td>
<td>Jhon two</td>
<td>Doe Two</td>
</tr>
</tbody>
</table>
<button>
convert
</button>
使用下面的javascript
$("button").click(function() {
var json = html2json();
alert(json);
});
function html2json() {
var json = '{';
var otArr = [];
// var i = 1;
var tbl2 = $('table tbody tr').each(function(e) {
x = $(this).children();
var itArr = [];
x.each(function() {
itArr.push('"' + $(this).text() + '"');
});
otArr.push('"' + e + '": {' + itArr.join(',') + '}');
})
json += otArr.join(",") + '}'
return json;
}
但是我想给每个值加上键,数字应该从1开始,而不是从零开始
我有一套渴望的结果,它应该是这样的
谢谢你的帮助
{
"1": {
no: "1",
name:"Jhon One",
lastname "Doe one"
}
,
"2": {
no: "1",
name:"Jhon two",
lastname "Doe two"
}
}
这是我尝试过的fiddel链接
您可以将
e
转换为一个数字,然后像中一样添加一个数字
但是,您返回的json无效。您可能想做一些事情,比如简化并确保有效的json,以及从任何表结构创建对象
function html2json() {
var otArr = [];
var tblHeaders = Array.from($('table thead tr')
.children())
.map(header => $(header).text());
var tbl2 = $('table tbody tr').each(function(e) {
const values = Array.from($(this).children());
const row = {};
for (let i = 0; i < tblHeaders.length; i++){
row[tblHeaders[i]] = $(values[i]).text();
}
otArr.push({
[e+1]: row
})
})
json = JSON.stringify(otArr);
return json;
}
函数html2json(){
var-otar=[];
var tblHeaders=Array.from($('table thead tr'))
.children())
.map(header=>$(header.text());
var tbl2=$('table tbody tr')。每个(函数(e){
const values=Array.from($(this.children());
常量行={};
对于(设i=0;i
试试e+1
changeotArr.push(“'+e+'”:{'+itArr.join(',')+'}')代码>
到
otArr.push('''+(e+1)+':{'+itArr.join(',')+'}')代码>
$(“按钮”)。单击(函数(){
var json=html2json();
});
函数html2json(){
var json='{';
var-otar=[];
var tbl2=$('table tbody tr')。每个(函数(e){
x=$(this.children();
var-itArr=[];
x、 每个功能(e){
var项目=“”;
如果(e==0){
items+='no:“+$(this.text()+”;
}
如果(e==1){
items+='name:“+$(this).text()+'”;
}
如果(e==2){
items+='email:“+$(this.text()+'”;
}
itArr.push(项目);
});
otArr.push(“'+(e+1)+'”:{'+itArr.join(',')+'}');
})
json+=otar.join(“,”+“}”
警报(json);
返回json;
}
斯诺
名称
电子邮件
1.
约翰一号
一号母鹿
2.
约翰二号
二号母鹿
转换
只需更改以下行
otArr.push('"' + e + '": {' + itArr.join(',') + '}');
到
括号将以数字而不是字符串的形式添加值
另外,为内部对象键添加键
数组
function html2json() {
var json = '{';
var otArr = [];
// var i = 1;
var tbl2 = $('table tbody tr').each(function(e) {
x = $(this).children();
var itArr = [];
var keys = ['no','name','lastname'];
x.each(function(i) {
itArr.push('"' + keys[i] + '":"' + $(this).text() + '"');
});
otArr.push('"' + (e+1) + '": {' + itArr.join(',') + '}');
})
json += otArr.join(",") + '}'
return json;
}
也许您可以使用这些字符作为生成对象的键。
检查
嘿,谢谢你的努力,但是我怎样才能显示像name:jhon plz这样的值的键呢?在最后我已经显示了所需的结果,没有问题。这将从任何表格中创建您想要的结果,而不仅仅是示例中的表格。感谢man plz花时间检查底部的问题以获得所需的结果。我想为所有值添加键。这是我要查找的结果{“1”:{“no:”1“,name:“Jhon One”,lastname“Doe One”},“2”:{“no:”1,“name:”Jhon two”,lastname“Doe two”},但仍然是一个问题{“srno:”1\“}值不应该在花括号中,它应该是逗号分隔的plz检查我上面的评论我希望stackoverflow链接可能会帮助您通过字符串连接构建JSON不是一个好主意。sonicblis和Félix的做法是正确的。
otArr.push('"' + e + '": {' + itArr.join(',') + '}');
otArr.push('"' + (e+1) + '": {' + itArr.join(',') + '}');
function html2json() {
var json = '{';
var otArr = [];
// var i = 1;
var tbl2 = $('table tbody tr').each(function(e) {
x = $(this).children();
var itArr = [];
var keys = ['no','name','lastname'];
x.each(function(i) {
itArr.push('"' + keys[i] + '":"' + $(this).text() + '"');
});
otArr.push('"' + (e+1) + '": {' + itArr.join(',') + '}');
})
json += otArr.join(",") + '}'
return json;
}
function html2json() {
var $table = $('table');
var $ths = $table.find('thead>tr>th');
var rows = {};
$table.find('tbody>tr').each(function () {
var row = {};
$(this).children().each(function (index) {
row[$ths[index].textContent] = this.textContent;
});
rows[row.srno] = row;
});
return JSON.stringify(rows);
}