如何在JSON stringify中使用变量作为字段名称?

时间:2019-02-03 09:44:37

标签: typescript

我希望能够使用变量作为字段名称来动态创建JSON对象。

我已经弄清楚了如何使用$()从变量中设置字段值,但是它不适用于字段名。

    const body: string = JSON.stringify({
      '__metadata': {
        'type': listItemEntityTypeName
      },
      `${FIELD_NAME}`: `${FIELD_VALUE}`
    });

我在VS Code中遇到的错误是:

  

[ts]无法调用和缺少类型的调用签名的表达式。类型'{'__metadata':{'type':string; }; }'没有兼容的呼叫签名。 [2349]   [ts]预期的属性分配。 [1136]

我正在使用打字稿进行反应。我是JavaScript的新手,如果我缺少明显的内容,请原谅我。

2 个答案:

答案 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)