我对将对象字符串化有疑问。
输入在下面:
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”参数。是可用于对对象进行字符串化的任何替代函数。
预先感谢
答案 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的方式