首页 > 解决方案 > 如何使用 Javascript 将空格分隔的多行字符串转换为 json?

问题描述

我正在开发一个 Web 应用程序,用户可以将他们的 excel 数据(多行 2 列)复制到网站的文本区域。在同一页面点击提交按钮时,会将excel数据转换为JSON,在同一网页的不同文本区域显示JSON。

我已经有了一个 HTML 页面,只是不确定如何编写转换代码。(代码如下)

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset = "utf-8" />

      <title>Convert</title>
    </head>
    <body>
      <h1>Convert Table Data (2 Columns) To JSON</h1>

      <button onclick="convert()">Convert to JSON</button>
      <br><br>

      <textarea id="inputText" rows="50" cols="100"></textarea>
      <textarea id="outputText" rows="50" cols="100" readonly></textarea>

      <script>
        var textarea = document.getElementById("inputText");
        var textarea2 = document.getElementById("outputText");
        function convert() {
           // textarea2.value = textarea.value.convertToJSON......
        }
      </script>
    </body>
    </html>

以下是将 Excel 数据复制并粘贴到文本区域时的样子:

Amy apples
Betty oranges
Cathy watermelon
Daisy bananas
Edward pears
Fiona grapes

提交后预期结果将显示在不同的文本区域:

{
 "Amy" : "apples",
 "Betty" : "oranges",
 "Cathy" : "watermelon",
 "Daisy" : "bananas",
 "Edward" : "pears",
 "Fiona" : "grapes"
}

标签: javascript

解决方案


您可以修剪字符串,然后将其拆分\n为字符串数组,映射数组并按空格拆分项目。现在您可以将数组数组转换为对象Object.fromEntries()

const str = `Amy apples
Betty oranges
Cathy watermelon
Daisy bananas
Edward pears
Fiona grapes`

const result = Object.fromEntries(str.trim().split('\n').map(s => s.split(' ')))

console.log(result)


推荐阅读