我正在寻找一个将文本文件转换为JSON的库。你知道哪一个有以下行为吗?我已经测试了一些库,但没有成功。
源文件包含一个键=值对列表,每行一个键。转换为正确的数据类型很重要,我的文件有:
- 字符串键
- 数字键
- 布尔键
- 对象(JSON(键
- 数组(简单字符串或JSON对象(
示例
name = "test"
version = 3
enabled = true
fruit = {"type":"orange","color":"orange"}
consumers = ["kids", "adults"]
years = [2014, 2015]
fruits = [{"type":"orange","color":"orange"},{"type":"apples","method":"red"}]
转换后的预期结果:有效的JSON(不需要样式/标识(
{
"name": "test",
"version": 3,
"enabled": true,
"fruit": {
"type": "orange",
"color": "orange"
},
"consumers": [
"kids",
"adults"
],
"years": [
2014,
2015
],
"fruits": [
{
"type": "orange",
"color": "orange"
},
{
"type": "apples",
"method": "red"
}
]
}
您使用的格式没有标准化,所以我怀疑您是否能找到一个开箱即用的包来解析它。您的值看起来确实是有效的JSON基元,因此您可以利用JSON.parse
来解析右侧。这样,您只需要一个解析器来健壮地提取所有原始的[key, value]
对,但大多数解析器可能会尝试做更多的事情,这可能不是您想要的。
如果你知道输入总是干净的,并且不需要一个完全健壮的解析器,那么你自己就不难实现:
const data = fs.readFileSync('./data.txt', {encoding: 'utf8'}).split('n').filter(Boolean)
const obj = {}
for (const line of data) {
const [key, val] = line.split(/s*=s*(.+)/)
obj[key] = JSON.parse(val)
}