将markdown转换为json对象

Dil*_*Dag 5 javascript markdown json converter node.js

我通过webpack加载器在这样的节点模块中导入了markdown文件

import mardownFile from './markdownfile.md'

该文件是一本教科书,各章之间用## / h2标签分隔

现在,我正在寻找一种将其转换为带有每个h2标签(或其他可能的包装器)的json对象的方法,这些标签位于单独的章节块中,以与页面内容为props.children的react页面组件一起使用。有关我要解决的问题的更多详细信息

我的markdown.md文件中有这个

#Title
##Chapter 1
text text
text
##Chapter 2
text
etc
##Chapter 3
more text
image
Run Code Online (Sandbox Code Playgroud)

我想阅读这个markdown并将其转换为一个对象,像这样...

var aText = {
pages: [
{
 "title": "Chapter 1.",
 "text": "text",
},
{
"title": "Chapter 2.",
"text": "text",
},
{
"title": "Chapter 3.",
"text": "text",
"img": "cat-stevens.png",
}
]}
Run Code Online (Sandbox Code Playgroud)

然后在javascript react组件中渲染这样的Page组件

<Page page={aText.pages[0]} />

我使用的是Mac osx计算机,但这是个人Web客户端项目,我试图在标准浏览器中进行解析,我使用的是Chrome,什么是实现此目的的最佳方法?有什么建议吗?

gal*_*kin 5

您无法导入md文件,因为只能在javascript文件上导入。您需要使用某些markdown解析器或编写自己的解析器。例如markdown-it

var MarkdownIt = require('markdown-it');
var md = new MarkdownIt();
var result = md.parse('# markdown-it rulezz!');
console.log(result);
Run Code Online (Sandbox Code Playgroud)

你会得到:

[Token {
  type: 'heading_open',
  tag: 'h1',
  attrs: null,
  map: [0, 1],
  nesting: 1,
  level: 0,
  children: null,
  content: '',
  markup: '#',
  info: '',
  meta: null,
  block: true,
  hidden: false
},
  Token {
  type: 'inline',
  tag: '',
  attrs: null,
  map: [0, 1],
  nesting: 0,
  level: 1,
  children: [[Object]],
  content: 'markdown-it rulezz!',
  markup: '',
  info: '',
  meta: null,
  block: true,
  hidden: false
},
  Token {
  type: 'heading_close',
  tag: 'h1',
  attrs: null,
  map: null,
  nesting: -1,
  level: 0,
  children: null,
  content: '',
  markup: '#',
  info: '',
  meta: null,
  block: true,
  hidden: false
}]
Run Code Online (Sandbox Code Playgroud)


Phi*_*ide 5

尝试使用markdown-to-json 库

npm install -g markdown-to-json
Run Code Online (Sandbox Code Playgroud)

给定一个名为的文件,lottery.md我进入终端中的目录并输入:

m2j lottery.md
Run Code Online (Sandbox Code Playgroud)

这会在屏幕上输出 json。

如果您使用基于 bash 的终端,您可以将该输出通过管道传输到这样的文件中。

m2j lottery.md >> lottery.json
Run Code Online (Sandbox Code Playgroud)

这将创建一个 json 文件,该文件lottery.json在与 markdown 相同的文件夹中调用。

如需更多帮助,您可以使用:

m2j -h
Run Code Online (Sandbox Code Playgroud)