正在将Key=Value文本文件转换为JSON



我正在寻找一个将文本文件转换为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)
}

最新更新