变量没有被JavaScript中的JSON生成值替换?

时间:2012-11-10 15:04:55

标签: javascript json variables

_postData : function ()
{
    var fieldName = "day";

    var day = /*returns an object from the back end business service*/

    var value = day.getValue();

    if (value)
    {
        return {
            fieldName : value
        };
    }
}

问题是,即使fieldName实际上是" day",当JSON有效负载被返回并打印时,我看到字面意思:

{
   fieldName: "16"
}

因此,出于某种原因,正在打印变量的名称,而不是它的实际字符串值。我想要的是:

{
   day: "16"
}

2 个答案:

答案 0 :(得分:4)

这不是JSON,它是Javascript对象文字。当您在Javascript对象文字中的属性的左侧放置一个符号时,该符号用作属性名称,而不是该名称的变量可能评估为的任何字符串。换句话说,{fieldName: 16}完全等同于{"fieldName": 16}

而不是这样做:

return {
     fieldName : value
};

你可以这样做:

var obj = {};
obj[fieldName] = value;
return obj;

在第二个中,如果fieldName是包含字符串"foo"的变量,则生成的对象将显示为{foo: 16}

答案 1 :(得分:0)

正如Kiyura所说,这不是定义对象的方式。您当前的代码实际上是创建一个fieldName属性而不是day属性的对象。相反,你需要做这样的事情:

_postData : function ()
{
    var fieldName = "day";

    var day = /*returns an object from the back end business service*/

    var value = day.getValue();

    if (value)
    {
        var ret={};
        ret[fieldName]=value;
        return ret;
    }
}