Javascript 是否无法将函数作为JSON键值存储在angular 5中的.JSON文件中

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

我们有一个Angular 5项目,其中有一个
.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);