Node.js 如何将表格字符串转换为JSON

Node.js 如何将表格字符串转换为JSON

表格: 以行和列显示的信息被称为“表格格式”。数据表是一种组织和实用的方法,用于显示包含重复数据项的大量信息。大多数办公生产力软件包,包括文字处理软件和电子表格,都具有以表格格式输入文本和数据的功能。

示例:

<table>
    <thead>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
            <th>Column 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>A1</td>
            <td>A2</td>
            <td>A3</td>
        </tr>
        <tr>
            <td>B1</td>
            <td>B2</td>
            <td>B3</td>
        </tr>
        <tr>
            <td>C1</td>
            <td>C2</td>
            <td>C3</td>
        </tr>
    </tbody>
</table>

JSON:JavaScript对象表示法,简称JSON。它是一种基于文本的数据传输格式,保留数据的组织结构。它支持在服务器上快速执行的数据结构,例如数组、对象和JSON文档。它还是一种基于JavaScript的语言无关的格式。JSON文件应该以.json扩展名和application/json媒体类型保存。

示例:

[
    [
        { 'Column 1': 'A1', 'Column 2': 'A2', 'Column 3': 'A3' },
        { 'Column 1': 'B1', 'Column 2': 'B2', 'Column 3': 'B3' },
        { 'Column 1': 'C1', 'Column 2': 'C2', 'Column 3': 'C3' }
    ]
]

过程: 我们需要一个将表格格式或字符串转换为JSON的NPM包,名为“tabletojson”。

npm install tabletojson

在这个包中,convert()和convertUrl()方法允许我们将标记表作为字符串、HTML块、整个页面和URL(可选的回调函数;也支持Promise)传递。每次都会返回一个数组作为响应。页面中的表格由响应中的每个数组条目表示(以HTML中找到的顺序相同)。

示例1: 在这个示例中,我们将使用包含任何表格数据的远程URL,来演示将表格转换为JSON的convertUrl()方法。首先,我们将从tabletojson模块中导入一个名为Tabletojson的类,并将其存储在一个名为tabletojson的变量中。这个convertUrl()方法将从这个类引用变量中调用。这个convertUrl()方法将接受以下两个参数:

参数:

  • 第一个参数将是一个远程URL或Web URL,其中包含任何表格式数据。
  • 第二个参数将是一个在成功将表格式数据转换为JSON完成后执行的回调函数。

    项目结构: 如下所示。

Node.js 如何将表格字符串转换为JSON

app.js

const tabletojson = require('tabletojson').Tabletojson; 
  
tabletojson.convertUrl( 
    'https://en.wikipedia.org/wiki/Tata_Consultancy_Services', 
    function (tablesAsJson) { 
        console.log(tablesAsJson[1]); 
    } 
);

运行应用程序的步骤: 打开终端并输入以下命令。

node app.js

Node.js 如何将表格字符串转换为JSON

示例2: 在这个示例中,我们将使用一个包含一些以表格格式展示的数据的本地HTML文件,以演示将表格转换为JSON数据的示例。首先,我们需要在app.js文件中导入来自tabletojson模块的Tabletojson类。在这个类中,有一个convert方法,我们将使用它来将表格数据转换为JSON。在开始编写代码之前,我们需要了解两种我们将在实现中使用的方法。第一个方法是fs.readFileSync(),第二个方法是path.resolve()。下面,我们将简要解释这两种方法以及它们的语法、参数和返回值。

使用fs.readFileSync()方法: fs模块包含一个称为fs.readFileSync()的应用程序编程接口(API),可用于读取文件并返回其内容。

语法:

fs.readFileSync( path, options )

参数:

  • path(路径): 使用文本文件的相对路径。也可以使用URL类型的路径。此外,文件也可以是文件描述符。如果两个文件位于同一文件夹,只需将文件名放在引号中。
  • options(选项): 这是一个可选参数,包含编码、标志和编码中的数据定义。其默认值为null,返回原始缓冲区,标志包括有关文件操作的信息。默认值为“r”。

返回值: 此方法将返回文件的内容。

使用path.resolve()方法: 可以使用path.resolve()方法解析一系列路由段为绝对路径。它通过从右到左的路径顺序将每个路径加在一起,直到生成绝对路径。所得到的路径被规范化,并删除任何必要的尾部斜杠。

语法:

path.resolve( [...paths] )

参数:

  • paths: 它由一组文件路径组成,这些路径将被合并为绝对路径。如果该参数的值不是字符串,则会引发 TypeError。

返回值: 此方法将返回一个包含绝对路径的字符串。

项目结构:

Node.js 如何将表格字符串转换为JSON

table.html文件: 在示例中使用此HTML文件作为展示演示的示例数据。

<!DOCTYPE html> 
<html lang="en"> 
  
<head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" 
        content="width=device-width, initial-scale=1.0"> 
    <title>GeeksforGeeks</title> 
</head> 
  
<body> 
    <table> 
        <thead> 
            <tr> 
                <th>Column 1</th> 
                <th>Column 2</th> 
                <th>Column 3</th> 
            </tr> 
        </thead> 
        <tbody> 
            <tr> 
                <td>A1</td> 
                <td>A2</td> 
                <td>A3</td> 
            </tr> 
            <tr> 
                <td>B1</td> 
                <td>B2</td> 
                <td>B3</td> 
            </tr> 
            <tr> 
                <td>C1</td> 
                <td>C2</td> 
                <td>C3</td> 
            </tr> 
        </tbody> 
    </table> 
</body> 
  
</html>

app.js文件:

const tabletojson = require('tabletojson').Tabletojson; 
const fs = require('fs'); 
const path = require('path'); 
  
const html = fs.readFileSync(path.resolve(__dirname, 'table.html'), 
    { encoding: 'UTF-8' }); 
const converted = tabletojson.convert(html); 
  
console.log(converted);

输出:

Node.js 如何将表格字符串转换为JSON

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程