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