我有一个JavaScript文件:
export default {
'test/index.yaml': {
name: 'Test Index',
product: 'test'
},
'test/hello.yaml': {
name: 'Test Greeting',
product: 'test'
}
}
我希望将其转换为JSON文件,其中所需的输出为:
{
"test/index.yaml": {
"name": "Test Index",
"product": "test"
},
"test/hello.yaml": {
"name": "Test Greeting",
"product": "test"
}
}
-
我想尝试使用这样的东西:
fs.readFileSync('test/configuration.js').toString().split('\n').forEach(function(line) {
fs.appendFileSync('newTest/configuration.json', JSON.stringify(line) + '\n');
});
但它没有使用输出:
进入正确的JSON语法"export default {"
" 'test/index.yaml': {"
" name: 'Test Index',"
" product: 'test'"
" },"
" 'test/hello.yaml': {"
" name: 'Test Greeting',"
" product: 'test'"
" }"
"}"
感谢您的帮助!
答案 0 :(得分:3)
//'somefile.js'
module.exports = {
'test/index.yaml': {
name: 'Test Index',
product: 'test'
},
'test/hello.yaml': {
name: 'Test Greeting',
product: 'test'
}
}
你的剧本:
let obj = require(__dirname + '/somefile.js');
console.log(obj);
//{ 'test/index.yaml': { name: 'Test Index', product: 'test' },
// 'test/hello.yaml': { name: 'Test Greeting', product: 'test' } }
fs = require('fs');
fs.writeFile('somefile.json', JSON.stringify(obj), function (err) {
if(err) console.log(err);
});
答案 1 :(得分:1)
有一个名为json5的库正是这样做的,将有效JavaScript的内容转换为有效的JSON。从他们的文件:
- 如果对象密钥是有效的标识符,则可以不加引号。
- 字符串可以单引号。