我希望能够使用变量作为字段名称来动态创建JSON对象。
我已经弄清楚了如何使用$()
从变量中设置字段值,但是它不适用于字段名。
const body: string = JSON.stringify({
'__metadata': {
'type': listItemEntityTypeName
},
`${FIELD_NAME}`: `${FIELD_VALUE}`
});
我在VS Code中遇到的错误是:
[ts]无法调用和缺少类型的调用签名的表达式。类型'{'__metadata':{'type':string; }; }'没有兼容的呼叫签名。 [2349] [ts]预期的属性分配。 [1136]
我正在使用打字稿进行反应。我是JavaScript的新手,如果我缺少明显的内容,请原谅我。
答案 0 :(得分:2)
JSON.stringify
内的所有内容都应该是有效的JSON对象
const body: string = JSON.stringify({
'__metadata': {
'type': listItemEntityTypeName
},
[FIELD_NAME]: `${FIELD_VALUE}` // FIELD_VALUE should also be fine, if you dont want to convert it to string.
});
删除键中的字符串文字可以为您提供有效的JSON并彻底解决错误
答案 1 :(得分:1)
您可以将对象视为数组。
var FIELD_NAME = 'hello'
var FIELD_VALUE = 'world'
var obj = {
'__metadata': {
'type': 'aaaa'
},
}
obj[FIELD_NAME] = FIELD_VALUE
console.log('obj', obj)