Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将HTML表转换为Json文件_Javascript_Php_Html_Json_Converter - Fatal编程技术网

Javascript 将HTML表转换为Json文件

Javascript 将HTML表转换为Json文件,javascript,php,html,json,converter,Javascript,Php,Html,Json,Converter,是否可以将HTML表转换为json,如下所示: 姓名性别年龄 约翰18岁 迈克19岁 Json: 我已经有了这个代码: (function() { var jsonArr = []; var obj = {}; var thNum = document.getElementsByTagName('th').length; var arrLength = document.getElementsByTagName('td').length; for

是否可以将HTML表转换为json,如下所示:

姓名性别年龄

约翰18岁

迈克19岁

Json:

我已经有了这个代码:

    (function() {
    var jsonArr = [];
    var obj = {};
    var thNum = document.getElementsByTagName('th').length;
    var arrLength = document.getElementsByTagName('td').length;

    for(i = 0; i<arrLength;i++){
        if(i%thNum==0){
            obj = {};
        }
        var head = document.getElementsByTagName('th')[i%thNum].innerHTML;
        var content = document.getElementsByTagName('td')[i].innerHTML;
        obj[head] = content;
        if(i%thNum==0){
            jsonArr.push(obj);
        }   
    }           
    document.write("<br>"+JSON.stringify(jsonArr));
})();
但是我需要在前面加上“Values”标记,并且“1”、“2”应该按行自动创建。
至少可以将其写入一个新的.json文件,如data.json?

如果您想将行数组表示为一个对象,请将
jsonArr.push(obj)
更改为
jsonObj[++rowIx]=obj
,其中
jsonObj
先前已初始化为
{/code>,而
rowIx
是一个已初始化为0的计数器(可能比对
i
进行数学运算更简单)

您发布的预期输出不是有效的JSON,因此我假设它应该由另一组大括号包装:

document.write("<br>"+JSON.stringify({"Values": jsonObj}));
document.write(“
”+JSON.stringify({“Values”:jsonObj}));
至于保存到文件,这是一个棘手的便携式方式。有几个其他答案可以解决这个问题,包括:


提供一个示例表作为代码的输入和示例输出
(function(){var jsonArr=[];var obj={};var jsonObj={};var thNum=document.getElementsByTagName('th').length;var arrLength=document.getElementsByTagName('td').length;for(i=0;i“+JSON.stringify({“Values”:jsonObj}));})rowIx
)。现在我添加了
var rowIx={}但现在它只显示一行和[object object],而不是1左右。它还显示最后一行而不是第一行。
rowIx
是一个计数器,一个计数为1、2、。。。;我会更新答案,让这更清楚。谢谢!现在它正是我所需要的。最后一个问题:我是否可以将此json保存到服务器上的文件中,例如data.json?没有任何来自用户的工作,查看网站?
    <!DOCTYPE html>
<TABLE border="3" rules="all" bgcolor="#E7E7E7" cellpadding="1" cellspacing="1">
<TR>
<TH align=center><font size="3" face="Arial">Date</font></TH>
<TH align=center><font size="3" face="Arial"><B>Teacher</B></font></TH>
<TH align=center><font size="3" face="Arial">?</font></TH>
<TH align=center><font size="3" face="Arial">Hour</font></TH>
<TH align=center><font size="3" face="Arial">Subject</font></TH>
<TH align=center><font size="3" face="Arial">Class</font></TH>
<TH align=center><font size="3" face="Arial">Room</font></TH>
<TH align=center><font size="3" face="Arial">(Teacher)</font></TH>
<TH align=center><font size="3" face="Arial">(Room)</font></TH>
<TH align=center><font size="3" face="Arial">XYY</font></TH>
<TH align=center><font size="3" face="Arial"><B>Information</B></font></TH>
<TH align=center><font size="3" face="Arial">(Le.) nach</font></TH>
</TR>
<TR><TD align=center><font size="3" face="Arial">24.9.</font></TD>
<TD align=center><font size="3" face="Arial"><B><strike>Dohe</strike></B></font></TD>
<TD align=center><font size="3" face="Arial">Free</font></TD>
<TD align=center><font size="3" face="Arial">1</font></TD>
<TD align=center><font size="3" face="Arial"><strike>Math</strike></font> </TD>
<TD align=center><font size="3" face="Arial">(9)</font> </TD>
<TD align=center><font size="3" face="Arial">---</font> </TD>
<TD align=center><font size="3" face="Arial"><strike>Dohe</strike></font></TD>
<TD align=center><font size="3" face="Arial">A001</font></TD>
<TD align=center>&nbsp;</TD>
<TD align=center>&nbsp;</TD>
<TD align=center><font size="3" face="Arial">Free.</font></TD>
</TR>
</TABLE>
<script>
(function() {
    var jsonArr = [];
    var obj = {};
    var thNum = document.getElementsByTagName('th').length;
    var arrLength = document.getElementsByTagName('td').length;

    for(i = 0; i < arrLength; i++){
        if(i%thNum === 0){
            obj = {};
        }
        var head = document.getElementsByTagName('th')[i%thNum].innerHTML;
        var content = document.getElementsByTagName('td')[i].innerHTML;
        obj[head] = content;
        if(i%thNum === 0){
            jsonArr.push(obj);
        }   
    }           
    document.write("<br>"+JSON.stringify(jsonArr));
})();
</script>
</body>
</html>
[{"Date":"24.9.","Teacher":"Dohe","?":"Free","Hour":"1","Subject":"Math ","Class":"(9) ","Room":"--- ","(Teacher)":"Dohe","(Room)":"A001","XYY":" ","Information":" ","(Le.) nach":"Free."}]
document.write("<br>"+JSON.stringify({"Values": jsonObj}));