我有一个JSON字符串,我想添加
"23":{"email":"abc333@123.com"}
对此,但我无法添加新对象,如
var json_string = '{"21":{"email":"abc@com"},"22":{"email":"abc2@com"}}';
var obj = JSON.parse(json_string); // to get a object
// Add
var new_obj = {
23: {"email" : "abc333@123.com"}
};
obj.push(new_obj);
console.log(obj);
此结果得到以下错误消息:
obj.push不是函数
为了更好地理解:我想向json字符串添加对象
我将new_obj
更改为
var new_obj = [{23,[{"email","abc333@123.com"}]];
但也许我还有其他问题。
答案 0 :(得分:3)
就像提到的那样,您的JSON不是数组。
如果您想将对象构建到new_obj中,一种简单的添加方法是使用Object.assign
。
例如
var json_string = '{"21":{"email":"abc@com"},"22":{"email":"abc2@com"}}';
var obj = JSON.parse(json_string); // to get a object
// Add
var new_obj = {
23: {"email" : "abc333@123.com"}
};
Object.assign(obj, new_obj);
//obj.push(new_obj);
console.log(obj);
答案 1 :(得分:1)
Array.push()
添加元素到数组的末尾,但是$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default busybox 1/1 Terminating 1 1h
kube-system coredns-55f86bf584-n84nw 1/1 Running 0 10m
kube-system coredns-55f86bf584-zl88b 1/1 Running 0 10m
$ kubectl logs coredns-55f86bf584-n84nw -n kube-system
.:53
2018/11/26 18:49:48 [INFO] CoreDNS-1.2.2
2018/11/26 18:49:48 [INFO] linux/amd64, go1.11, eb51e8b
CoreDNS-1.2.2
linux/amd64, go1.11, eb51e8b
2018/11/26 18:49:48 [INFO] plugin/reload: Running configuration MD5 = 2e2180a5eeb3ebf92a5100ab081a6381
变量不是数组。它是对象,您应该为其添加属性,如底部所示。
obj
答案 2 :(得分:0)
方法push()
仅在数组上可用。您需要创建自己的:
var json_string = '{"21":{"email":"abc@com"},"22":{"email":"abc2@com"}}';
var obj = JSON.parse(json_string); // to get a object
let pushToObj = function pushToObj(targetObj, newObj) {
let key = Object.keys(targetObj).sort();
key = Number(key[key.length - 1]);
targetObj[(key + 1).toString()] = newObj;
};
// Add
pushToObj(obj, {"email" : "abc333@123.com"});
console.log(obj);
答案 3 :(得分:0)
要添加到@Keith的答案,您还可以使用rest spread运算符来完成此操作:
var json_string = '{"21":{"email":"abc@com"},"22":{"email":"abc2@com"}}';
var obj = JSON.parse(json_string); // to get a object
// Add
var new_obj = {
23: {"email" : "abc333@123.com"}
};
obj = {...obj, ...new_obj};
console.log(obj);