如何通过nodejs将文本转换为JSON?
输入 :

---
title:Hello World
tags:java,C#,python
---
## Hello World
```C#
Console.WriteLine(""Hello World"");
```
预期产量:
{
    title:"Hello World",
    tags:["java","C#","python"],
    content:"## Hello World\n```C#\nConsole.WriteLine(\"Hello World\"");\n```"
}
我试图思考的是:
  • 使用正则表达式获取key:value数组,如下所示:
  • ---
    {key}:{value}
    ---
    
  • 然后检查键是否等于标签,然后使用,使用string.split函数获取标签值数组,否则返回值。
  • 的另一部分是内容值。

  • 但是我不知道如何通过nodejs实现它。

    最佳答案

    如果输入采用已知格式,则应使用经过战斗测试的库将输入转换为json,特别是如果输入本质上是极端动态的,否则,取决于输入的动态程度,您也许可以轻松构建解析器。
    假设输入是您发布的静态结构,则应执行以下操作

    function convertToJson(str) {
        const arr = str.split('---').filter(str => str !== '')
        const tagsAndTitle = arr[0]
        const tagsAndTitleArr = tagsAndTitle.split('\n').filter(str => str !== '')
        const titleWithTitleLabel = tagsAndTitleArr[0]
        const tagsWithTagsLabel = tagsAndTitleArr[1]
    
        const tagsWithoutTagsLabel = tagsWithTagsLabel.slice(tagsWithTagsLabel.indexOf(':') + 1)
        const titleWithoutTitleLabel = titleWithTitleLabel.slice(titleWithTitleLabel.indexOf(':') + 1)
    
        const tags = tagsWithoutTagsLabel.split(',')
        const result = {
            title: titleWithoutTitleLabel,
            tags,
            content: arr[1].slice(0, arr[1].length - 1).slice(1) // get rid of the first new line, and last new line
        }
        return JSON.stringify(result)
    
    }
    
    
    const x = `---
    title:Hello World
    tags:java,C#,python
    ---
    ## Hello World
    \`\`\`C#
    Console.WriteLine(""Hello World"");
    \`\`\`
    `
    
    
    console.log(convertToJson(x))

    10-04 18:07