Javascript 将原始文本转换为JSON数据
我试图实现一个解析器,将原始文本数据转换为JSON格式。案文如下 (举例)Javascript 将原始文本转换为JSON数据,javascript,json,parsing,jq,Javascript,Json,Parsing,Jq,我试图实现一个解析器,将原始文本数据转换为JSON格式。案文如下 (举例) #菜单名 ##节名 ###项目名称 >描述 >价格 >图像URL(可选) ###项目名称2 >描述 >价格 >图像URL(可选) 元素的顺序将按给定的顺序排列 我想要的理想输出如下: { name: "menu name", sections: [ { name: "Section name", items: [{ name: "item name", de
- #菜单名
- ##节名
- ###项目名称
- >描述
- >价格
- >图像URL(可选)
- ###项目名称2
- >描述
- >价格
- >图像URL(可选)
{
name: "menu name",
sections: [
{
name: "Section name",
items: [{
name: "item name",
description: "description",
price: 23.00
},
{
name: "item name",
description: "description",
price: 43.00
},
]
}
]
}
注意:每个部分可以有多个项目,每个菜单可以有多个部分。因此,应保持顺序,即如果出现新的部分,则下面的项目现在应成为该部分的一部分
我尝试了一个使用字符串解析的解决方案,效果很好,但我想知道执行此任务的标准方法。因为预期的输出是JSON,所以使用面向JSON的工具(例如)可能有意义。当然有许多不同的可能方法,但这里有一种简单、直接、易于扩展,并且在某些方面易于理解,至少对于熟悉JSON查询语言的人来说是如此 下面的程序将为每个“菜单”(即每次出现“#菜单名”行)生成一个JSON对象 菜单.jq 调用 上面使用了
输入
,因此-n
命令行选项至关重要:
jq -n -f menus.jq input.txt
输出
使用示例输入:
{
"name": "Menu Name",
"sections": [
{
"name": "Section Name",
"items": [
{
"name": "Item Name",
"description": "Description",
"price": "Price",
"url": "Image URL (optional)"
},
{
"name": "Item Name 2",
"description": "Description",
"price": "Price",
"url": "Image URL (optional)"
}
]
}
]
}
没有解析自定义文本格式的标准方法。您可以编写自己的函数,在其中以字符串格式创建json,一旦完成,您就可以将其解析为json。您已经做了什么吗?让我们看看。从你的原始文本中,我看到了一个模式,如果这个模式是恒定的,也许有办法。你可以使用一个PEG,比如
{
"name": "Menu Name",
"sections": [
{
"name": "Section Name",
"items": [
{
"name": "Item Name",
"description": "Description",
"price": "Price",
"url": "Image URL (optional)"
},
{
"name": "Item Name 2",
"description": "Description",
"price": "Price",
"url": "Image URL (optional)"
}
]
}
]
}