代码之家  ›  专栏  ›  技术社区  ›  Lymedo

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

  •  0
  • Lymedo  · 技术社区  · 6 年前

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

    $() 但它不适用于字段名。

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

    我在VS代码中遇到的错误是:

    [ts]无法调用类型缺少调用签名的表达式。类型“{'\u metadata':{'Type':string;};}”没有兼容的调用签名。[2349]

    我用的是打字脚本和反应。我是一个相当新的JavaScript,所以如果我遗漏了一些明显的东西,请原谅我。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Dhananjai Pai    6 年前

    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并彻底解决错误

        2
  •  1
  •   vmf91    6 年前

    可以将对象视为数组。

    var FIELD_NAME = 'hello'
    var FIELD_VALUE = 'world'
    
    var obj = {
        '__metadata': {
            'type': 'aaaa'
        },
    }
    
    obj[FIELD_NAME] = FIELD_VALUE
    
    console.log('obj', obj)