将对象覆盖为字符串

时间:2018-12-14 04:24:35

标签: javascript arrays

我对将对象字符串化有疑问。

输入在下面:

var obj = [{'name' : 'Jenisha', 'lastName' : 'dalin'}];
obj.__used = true;

我的预期输出:

JSON.stringify(obj, undefined, 4);
"[
    {
        "name": "Jenisha",
        "lastName": "dalin"
    }
],
"__used" : true
"

但是结果是:

JSON.stringify(obj, undefined, 4);
"[
    {
        "name": "Jenisha",
        "lastName": "dalin"
    }
]"

已删除“ __used”参数。是可用于对对象进行字符串化的任何替代函数。

预先感谢

4 个答案:

答案 0 :(得分:4)

由于本质上是对数组进行字符串化,因此JSON数组表示形式内的字符串键毫无意义。关于MDN的JSON.stringify文档中也对此进行了说明。

由于数组是这样进行字符串化的:["value1", "value2"],并且键实际上只是数字(0、1、2)而被省略,因此添加的字符串键将被忽略,因为它不能在输出中表示。

您可以将两个属性都添加到对象中,然后将其序列化:

JSON.stringify ({
    arr: [{'name' : 'Jenisha', 'lastName' : 'dalin'}],
    used: true
});

答案 1 :(得分:1)

JSON.stringify使用有效的JSON格式。但似乎您的Obj的JSON格式无效。

要验证您的JSON转到:http://jsonlint.com/

答案 2 :(得分:0)

请勿在代码中使用[]。

var obj = {'name' : 'Jenisha', 'lastName' : 'dalin'};
obj.__used = true;

现在,如果对obj进行字符串化,您还将获得__used属性。

答案 3 :(得分:0)

Json是由我准备的库,我只是将其字符串化,而将json字符串化则删除了我的对象。我们可以解决这个问题吗?

var obj = {'name' : 'Jenisha', 'lastName' : 'dalin'};
obj.__used = true;

这就是我准备json的方式