By JSON text,我的意思是JSON.stringify的返回值。我知道如何做到这一点与JSON对象,但我不知道如何用JSON 文本(添加新属性/元素,说“sn”:“1”到JSON 文本,但它的结构被保留,我不需要再次将其串起来),任何人都可以帮助我吗?我该如何将新属性添加到JavaScript中的JSON字符串中?
谢谢!
By JSON text,我的意思是JSON.stringify的返回值。我知道如何做到这一点与JSON对象,但我不知道如何用JSON 文本(添加新属性/元素,说“sn”:“1”到JSON 文本,但它的结构被保留,我不需要再次将其串起来),任何人都可以帮助我吗?我该如何将新属性添加到JavaScript中的JSON字符串中?
谢谢!
按照你建议的方式来做它没有任何意义......只要将它重新转换成一个对象,添加你的领域并再次将其串联起来!或者我错过了什么?
你将不得不以某种方式解析它。最直接的方法可能是将其解压缩为object/array/literal数据。但是,如果您不想这样做,则可以使用regular expressions或String
对象的方法(如substr)直接操作字符串。
我不知道你为什么想要这样做 - 为什么不只是在之前添加属性然后你将其加密?
但是,如果你一定要,因为包含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对象那样的东西。
对不起,我没有指出我想这样做的原因。问题是我需要在向它添加新的属性/元素之前找出JSON文本的长度。但是...正如你指出的,我仍然可以stringfy - >获取长度 - > de-stringfy - 添加一个新的属性/元素 - > stringfy它。非常感谢! –
在这种情况下,您不需要去弦:您仍然获得对原始对象的引用,因此只需再次添加属性并进行字符串化即可。 – nnnnnn
为什么你不能解压缩JSON,更新它,然后再次对它进行字符串处理? –
任何字符串操作函数就足够了。 –
这个问题可能不是最佳实践,但它是一个合理的问题,我认为不值得赞成。 – ryandlf