Добавить объект или массив в строку JSON, используя JavaScript - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть строка 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 голосов
/ 26 ноября 2018

Чтобы добавить ответ @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);
0 голосов
/ 26 ноября 2018

Метод 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);
0 голосов
/ 26 ноября 2018

Как уже упоминалось, ваш 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);
0 голосов
/ 26 ноября 2018

Элемент Array.push() добавляет элемент в конец массива, но переменная obj не является массивом.Это объект, и вы должны добавить к нему свойство, как показано внизу.

var json_string = '{"21":{"email":"abc@com"},"22":{"email":"abc2@com"}}';
var obj = JSON.parse(json_string);
obj[23] = {"email": "abc333@123.com"}
console.log(obj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...