将新数组元素添加到JSON对象

Cha*_*ith 109 javascript json

我有一个JSON格式对象,我从一个名为teamJSON的变量中的JSON文件中读取,如下所示:

 {"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}
Run Code Online (Sandbox Code Playgroud)

我想在数组中添加一个新项,例如

{"teamId":"4","status":"pending"}
Run Code Online (Sandbox Code Playgroud)

结束

{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}
Run Code Online (Sandbox Code Playgroud)

在写回文件之前.添加到新元素的好方法是什么?我接近但所有双引号都被逃脱了.我已经找到了一个很好的答案,但没有一个完全覆盖这个案例.任何帮助表示赞赏.

Pau*_* S. 206

JSON只是一种表示法 ; 进行所需的更改parse,以便将更改应用于本机JavaScript对象,然后再stringify应用于JSON

var jsonStr = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';

var obj = JSON.parse(jsonStr);
obj['theTeam'].push({"teamId":"4","status":"pending"});
jsonStr = JSON.stringify(obj);
// "{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}"
Run Code Online (Sandbox Code Playgroud)

  • 保罗,这是一个非常有建设性的答案.它解决了问题陈述中的不足,而没有贬低原始海报.它更清楚地描述了对javascript对象进行操作与这些对象的JSON文本表示之间的界限.我认为必须理解一旦解析了JSON,我们就在纯javascript对象上运行 - 它们最初来自JSON的事实是无关紧要的.无论如何,在所有贬损性言论让OP感觉像个白痴之后,阅读你的答案是一股清新的空气. (24认同)
  • 用于指出这个的+1需要首先被解析为一个被操纵的对象. (15认同)
  • @Phil:如果它是JSON,那就是一个字符串.如果不是,那就不是JSON. (5认同)
  • 他说他已经在一个名为`teamJSON`的变量中拥有了该对象.在任何时候都没有提到的字符串 (3认同)

Aja*_*pta 19

var Str_txt = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';
Run Code Online (Sandbox Code Playgroud)

如果要在最后位置添加,请使用代码

var parse_obj = JSON.parse(Str_txt);
parse_obj['theTeam'].push({"teamId":"4","status":"pending"});
Str_txt = JSON.stringify(parse_obj);
Output //"{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}"
Run Code Online (Sandbox Code Playgroud)

并且,如果要在第一个位置添加,则使用代码

var parse_obj = JSON.parse(Str_txt);
parse_obj['theTeam'].unshift({"teamId":"4","status":"pending"});
Str_txt = JSON.stringify(parse_obj);
Output //"{"theTeam":[{"teamId":"4","status":"pending"},{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}"
Run Code Online (Sandbox Code Playgroud)

并且,任何人都想数组的某个位置添加然后尝试下面的代码

parse_obj['theTeam'].splice(2, 0, {"teamId":"4","status":"pending"});
Output //"{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"4","status":"pending"},{"teamId":"3","status":"member"}]}"
Run Code Online (Sandbox Code Playgroud)

上面的代码块在第二个元素后添加一个元素.