使用javascript

时间:2018-11-26 15:21:21

标签: javascript json multidimensional-array

我有一个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"}]];

但也许我还有其他问题。

4 个答案:

答案 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);