我如何在JavaScript中添加新的属性到JSON字符串
How could I add new property into a JSON string in JavaScript?
这里的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)来直接操作字符串。
- 如何向JSON数组动态添加属性
- 创建新属性后的 JSON 空属性
- 使用XPath样式访问Javascript JSON对象属性
- 在不使用lodash-get的情况下从json中提取深层属性
- json-api和错误结果:无法读取属性'长度'的未定义
- 无法使用ng repeat检索动态创建的JSON对象的属性
- 使用json数据更改视频标签中的src属性
- 只将JSON中的属性加载到现有的javascript对象中,而不破坏方法
- 访问嵌套 json 对象的属性将返回未定义
- JSON.parse:应为''或'}'在对象的属性值之后
- 正在打印JSON属性
- 无法将 json 数据添加到 pyjade 中的数据属性
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串
- 如何将返回一串数字的 JSON 属性转换为日期
- Gmaps4rails:如何向 json 添加属性
- 向 JSON 对象属性添加引号
- 将地理 JSON 要素属性添加到地图框弹出窗口
- 如何在 JSF 中将 JS 函数作为 JSON 属性传递给前端
- 当图像和链接是 json 对象属性的值时,它们不起作用