将JavaScript字符串解析为Object

问题描述 投票:0回答:1

我正在研究一些需要我将字符串转换为Javascript对象的东西。我已经尝试了很多不同的东西,在这里查找答案,但它们似乎都没有真正符合我的问题。

所以这就是我要做的事情:我需要获取JS文件的内容,看起来像这样:(我通过简单的HTTP获取内容)

initiateOptions({
    fullscreen: true,
    showController: true,
    introModal: true,
    client: {
        name: 'Easyfairs - Flanders Expo',
        city: 'Gent',
        googlePlaceId: 'xxx'
    },
    preloadImages: {
        client: 'easyfairs_flandersexpo'
    },
    languages: ['EN','FR','NL'],
    logo: 'images/logo_wit.png',
    css: ['https://fonts.googleapis.com/css?family=PT+Sans', '/css/event- 
room-card.css', '/css/easyfairs.css'],
    color: '#99cc33',
    explainerImage: ['media/explainerImage.png'],
    /*customTexts: {
        switchYes: [{ "language":"NL", "text":"Beurs" },{ "language":"EN", 
"text":"Exhibition" },{ "language":"FR", "text":"Exhibition" }],
        switchNo: [{ "language":"NL", "text":"Leeg" },{ "language":"EN", 
"text":"Empty" },{ "language":"FR", "text":"Vide" }]
    },*/
});

我必须使用此文件中的数据,因此我想将其转换为可以正常使用的JS对象。我将文件的内容作为字符串获取,因此我可以使用字符串操作等删除周围的函数。

如您所见,它是一个JS对象,包含在一个函数中,该函数还包含注释行。我觉得很难让它工作,我知道有一种方法可以让它使用eval(),但我宁愿不使用它。

有人可以帮帮我吗?谢谢你的问候。

PS:我无法控制工作流程,这是项目结构的方式,所以我需要让它以这种方式工作。

javascript json string parsing object
1个回答
0
投票

您有两种选择:

  • 使用像Esprima这样的javascript解析器,将你的js提供给它并走AST来重建对象
  • 使用eval,沿着

js = `initiateOptions({
    fullscreen: true,
    showController: true,
    introModal: true,
    // etc
})`


let initiateOptions = x => x;
let result = eval(js);
console.log(result)

不要试图使用字符串函数,正则表达式等来解析它 - 你只是浪费你的时间。

© www.soinside.com 2019 - 2024. All rights reserved.