从JS写到JSON

时间:2017-07-05 17:11:28

标签: javascript json

我有一个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'"
"  }" 
"}"

感谢您的帮助!

2 个答案:

答案 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。从他们的文件:

  
      
  • 如果对象密钥是有效的标识符,则可以不加引号。
  •   
  • 字符串可以单引号。
  •