如何在JavaScript中将新属性添加到JSON字符串中?

时间:2011-11-15 06:24:14

标签: javascript json

通过JSON text ,我的意思是JSON.stringify的返回值。我知道如何使用JSON对象执行此操作,但我无法弄清楚如何使用JSON text (添加新属性/元素,将“sn”:“1”添加到JSON text ,但保留了它的结构,我不需要再次对其进行字符串化),有人可以帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

我不知道您为什么要这样做 - 为什么不在之前添加属性进行字符串化呢?

但如果必须,给定一个包含JSON的字符串:

var myJSON = '{"prop1":"val1","prop2":"val2"}';

您可以通过以下方式轻松地将属性添加到开头:

myJSON = '{' + '"sn":"1",' + myJSON.substr(1);

或者将其添加到最后:

myJSON = myJSON.replace(/}$/, ',"sn":"1"' + '}');

或者使用String操作函数的其他任何组合都会让你感到高兴......

如果你想在字符串中的特定位置添加新属性,比如说在嵌套对象或数组内部,那么,再次某种正则表达式或.indexOf().substr()的组合或者其他什么东西可以做到,但我真的认为以这种方式处理它是很难的。

显然上面的代码可以包含在一个函数中,'"sn":"1"'可以替换为参数或变量名或其他 - 但为什么

另请注意,我已假设上面至少会有一个现有属性并相应地插入逗号 - 如果您想允许空对象,则可以使其变得更智能。

P.S。没有“JSON字符串”和“JSON对象”:所有 JSON是一个字符串。在JavaScript中,创建对象的一种方法是使用激发JSON的对象文字语法,但是没有JSON对象。

答案 1 :(得分:1)

按照你建议的方式进行操作毫无意义...只需将其转回对象,添加字段并再次进行字符串化即可!或者我错过了什么?

答案 2 :(得分:0)

你将不得不以某种方式解析它。最直接的方法可能是将其解串为对象/数组/文字数据。但是,如果您不想这样做,可以使用regular expressionsString对象的方法(如substr)直接操作字符串。