我如何在JavaScript中添加新的属性到JSON字符串

How could I add new property into a JSON string in JavaScript?

本文关键字:属性 JSON 字符串 添加 JavaScript      更新时间:2023-09-26

这里的JSON text是指JSON.stringify的返回值。我知道如何用JSON对象做到这一点,但我不知道如何用JSON 文本做到这一点(添加新的属性/元素,说"sn":"1"到JSON 文本,但它的结构是保持的,我不需要再字符串化它),有人能帮助我吗?

谢谢!

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

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

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

你可以很容易地在开头添加一个属性:

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

或者加到末尾:

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

或者使用任何你喜欢的字符串操作函数的其他组合…

如果你想在字符串的特定位置添加新属性,比如在嵌套对象或数组或其他东西中,好吧,再一次,某种正则表达式或.indexOf().substr()的组合或其他东西可以做到这一点,但我真的认为这样做是疯狂的。

显然,上面的代码可以包装在一个函数中,'"sn":"1"'可以用参数或变量名或其他任何东西代替-但是为什么?

还请注意,我在上面假设至少有一个现有的属性,并相应地插入了一个逗号——如果你想允许空对象,你可以让它更聪明。

注:没有"JSON字符串"answers"JSON对象":所有 JSON都是字符串。在JavaScript中,创建对象的一种方法是使用JSON的对象字面语法,但是没有JSON对象这样的东西。

按你建议的方式做是没有意义的…只需将其转换回对象,添加您的字段并再次将其字符串化!还是我错过了什么?

您必须以某种方式解析它。最直接的方法可能是将其非字符串化为对象/数组/文字数据。但是如果您不想这样做,您可以使用正则表达式,或者String对象的方法(如substr)来直接操作字符串。