为什么我不能将对变量的引用作为JSON属性的键传递?

时间:2017-07-10 21:05:24

标签: javascript json node.js

我试图找出为什么我的node.js应用程序在尝试将对POST请求主体的一部分的引用作为对象文字的键传递时不喜欢它。请考虑以下事项:

//////////CODE SNIPPET

//problem section of object
"sort": [
    {
        req.body.sortField: {
            "order": req.body.direction,
            "unmapped_type": "boolean"
        }
    }
]

//////////REQUEST BODY

{
    "fromDate": 1468213200000,
    "toDate": 1468219300000,
    "sortField": "#timestamp_milli",
    "direction": "desc",
    "columns": [
        "*"
    ] 
}

我能够通过引用将direction属性作为值传递而没有任何问题,但是当我尝试将sort属性作为键传递时,我在运行应用程序时遇到错误:

req.body.sort: {
   ^
SyntaxError: Unexpected token .

我的猜测是我无法将引用作为对象文字中的键传递。如果这是真的,为什么?有没有解决这个问题?如果它不是真的,我在这里的理解是什么?

感谢您的时间。

编辑:JSON和JavaScript对象文字之间的澄清。还有,回答。谢谢大家!

2 个答案:

答案 0 :(得分:5)

从ES6开始,你可以使用动态键(这就是你想要的)。它的语法需要方括号:

"sort": [
    {
        [req.body.sortField]: {
            "order": req.body.direction,
            "unmapped_type": "boolean"
        }
    }
]

请注意,这不是JSON,而是JavaScript对象文字。

答案 1 :(得分:0)

试试

"sort": [
    {
        [req.body.sortField]: {
            "order": req.body.direction,
            "unmapped_type": "boolean"
        }
    }
]

编辑:对不起,我想念那个部分