Quiero agregar datos de otro archivo Json a otro sin sobrescribir el existente. Simplemente no puedo ir más lejos, la consola siempre me da lo siguiente:
Console output Data string [ "follow1", "follow2", "follow3", "follow4", "[\"follow5\",\"follow6\",\"follow7\",\"follow8\",\"follow9\"]" ]Este es mi código, me gustaría agregar los datos pero sin corchetes y sin barras invertidas. Sería muy bueno si alguien pudiera ayudarme. Muchas gracias
const user = require('./user.json'); const oldUser = user.user_follwos["user1"]; const data = require('./data.json'); const toAdd = JSON.stringify(data); const result = JSON.stringify(toAdd); oldUser.push(...toAdd.split(' ')) const newData = JSON.stringify(oldUser, null, 4) console.log('\nData \n' + typeof newData + ' \n' + newData);y aquí están mis archivos json
//user.json { "application_id": "123546789", "user_follwos": { "user1": [ "follow1", "follow2", "follow3", "follow4" ], "user2": [ "followA", "followB", "followC", "followD" ] }, ... ... } //data.json [ "follow5", "follow6", "follow7", "follow8", "follow9" ]Debe convertir su estructura de datos a JSON exactamente una vez al final, inmediatamente antes de escribir el resultado en el archivo.
Tal como está, está convirtiendo todo a JSON en cada oportunidad. Entonces, cada vez que intenta agregar, digamos, una matriz a su estructura de datos, en su lugar agrega una cadena de JSON que representa esa matriz.
No necesita encadenar su variable de datos porque es un objeto javascript, por lo que puede concatenarlo al final de su matriz de usuario existente.
const user = require('./user.json'); let oldUser = user.user_follwos["user1"]; const data = require('./data.json'); oldUser = oldUser.concat(data); const newData = JSON.stringify(oldUser, null, 4); console.log('\nData \n' + typeof newData + ' \n' + newData);El método concat crea un nuevo objeto de matriz para que pueda asignar el resultado a una nueva variable sin sobrescribir su variable "oldUser" existente.
Data string [ "follow1", "follow2", "follow3", "follow4", "follow5", "follow6", "follow7", "follow8", "follow9" ]Primero que nada para hacer algo necesitas ambos datos en json
let allTogether = data.push(...oldUser); uniq = [...new Set(allTogether )]; user_follwos.user1 = uniqEspero que esto sea lo que necesitas
let user = { "application_id": "123546789", "user_follwos": { "user1": [ "follow1", "follow2", "follow3", "follow4" ], "user2": [ "followA", "followB", "followC", "followD" ] } }; let data = [ "follow5", "follow6", "follow7", "follow8", "follow9" ]; let oldUser = user["user_follwos"]["user1"]; console.log(`This is old user array`); console.log(oldUser); let allTogether = []; allTogether.push(...data) allTogether.push(...oldUser); console.log(`After we put all together`); console.log(allTogether); uniq = [...new Set(allTogether )]; console.log(`Getting unique values`); console.log(uniq); oldUser = uniq; console.log(`Now olds user is`); console.log(oldUser);