我正在研究一些需要我将字符串转换为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:我无法控制工作流程,这是项目结构的方式,所以我需要让它以这种方式工作。
您有两种选择:
eval
,沿着js = `initiateOptions({
fullscreen: true,
showController: true,
introModal: true,
// etc
})`
let initiateOptions = x => x;
let result = eval(js);
console.log(result)
不要试图使用字符串函数,正则表达式等来解析它 - 你只是浪费你的时间。