Javascript 是否无法将函数作为JSON键值存储在angular 5中的.JSON文件中
我们有一个Angular 5项目,其中有一个Javascript 是否无法将函数作为JSON键值存储在angular 5中的.JSON文件中,javascript,json,angular,typescript,visual-studio-code,Javascript,Json,Angular,Typescript,Visual Studio Code,我们有一个Angular 5项目,其中有一个.json文件,我们正在使用加载到.ts文件中 .json文件包含以下内容: { stringKey: "stringValue", functionKey: function() { console.log('function called!') } } 它抛出错误:[json]值应为 如果我打开ChromeDevTool并将上面的对象设置为值,它可以正常工作,但在项目中不起作用 var obj={ st
.json
文件,我们正在使用加载到.ts
文件中
.json
文件包含以下内容:
{
stringKey: "stringValue",
functionKey: function() {
console.log('function called!')
}
}
它抛出错误:[json]值应为
如果我打开ChromeDevTool并将上面的对象设置为值,它可以正常工作,但在项目中不起作用
var obj={
stringKey:“stringValue”,
functionKey:function(){
log('调用函数!')
}
}
obj.functionKey()代码>JSON中没有函数数据类型
看。JSON支持对象、数组、字符串、数字、布尔值和null
它是一种数据格式,而不是一种编程语言。它支持函数没有多大意义 不能将函数放在json文件中,因为它是一种数据格式语言,
但您可以在js文件中使用js对象执行此操作,就像您所做的那样:
var obj = {
functionKey: function() {
console.log('function called!')
}
}
obj.functionKey();
这里您只是创建一个对象obj
而不是JSON
只需尝试使用JSON将此对象转换为JSON。stringify(obj)
它将删除functionKey,因为它不是字符串。看看这是否有帮助(functionKey
需要是字符串,然后使用eval
获得结果)
不可能。JSON值只能是标量和文字对象或数组声明。那么在DevTool控制台中怎么可能呢?@student-因为那是JavaScript(一种编程语言)而不是JSON。我看清楚了,那么我该如何处理这个场景呢?有什么建议吗?把你的函数存储在你的程序中。使用数据文件中的数据来决定要调用哪些函数。感谢您的澄清,对于我的特定项目需求,我仍然需要一些解决方法来将函数存储在JSON中。无论如何,谢谢!
var obj = {
stringKey: "stringValue",
functionKey: function() {
console.log('function called!')
}
}
obj.functionKey();
var obj = {
stringKey : "stringValue",
functionKey: "(function() { console.log('function called')})()"
}
var result = eval(obj.functionKey);