2011-11-15 36 views
-1

By JSON text,我的意思是JSON.stringify的返回值。我知道如何做到这一点与JSON对象,但我不知道如何用JSON 文本(添加新属性/元素,说“sn”:“1”到JSON 文本,但它的结构被保留,我不需要再次将其串起来),任何人都可以帮助我吗?我该如何将新属性添加到JavaScript中的JSON字符串中?

谢谢!

+2

为什么你不能解压缩JSON,更新它,然后再次对它进行字符串处理? –

+0

任何字符串操作函数就足够了。 –

+0

这个问题可能不是最佳实践,但它是一个合理的问题,我认为不值得赞成。 – ryandlf

回答

1

按照你建议的方式来做它没有任何意义......只要将它重新转换成一个对象,添加你的领域并再次将其串联起来!或者我错过了什么?

0

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

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对象那样的东西。

+0

对不起,我没有指出我想这样做的原因。问题是我需要在向它添加新的属性/元素之前找出JSON文本的长度。但是...正如你指出的,我仍然可以stringfy - >获取长度 - > de-stringfy - 添加一个新的属性/元素 - > stringfy它。非常感谢! –

+0

在这种情况下,您不需要去弦:您仍然获得对原始对象的引用,因此只需再次添加属性并进行字符串化即可。 – nnnnnn

相关问题