Home > Software design >  add keys to a json file, remove duplicates and write to json file in javascript
add keys to a json file, remove duplicates and write to json file in javascript

Time:12-09

I want to add data from another Json file to another without overwriting the existing one. I just can't get any further, the console always gives me the following:

Console output 
Data 
string  
[
    "follow1",
    "follow2",
    "follow3",
    "follow4",
    "[\"follow5\",\"follow6\",\"follow7\",\"follow8\",\"follow9\"]"
]

This is my code, I would like to add the data but without square brackets and without backslashes. It would be really nice if someone could help me. Thanks very much

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

and here are my json files

//user.json
{
  "application_id": "123546789",
  "user_follwos": {
    "user1": [
      "follow1",
      "follow2",
      "follow3",
      "follow4"
    ],
    "user2": [
      "followA",
      "followB",
      "followC",
      "followD"
    ]
  },
 ...
 ...
}
//data.json
[
  "follow5",
  "follow6",
  "follow7",
  "follow8",
  "follow9"
]

CodePudding user response:

You don't need to stringify your data variable because it is a javascript object so you can just concat it to the end of your existing user array.

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

The concat method creates a new array object so you could assign the result to a new variable without overwriting your existing "oldUser" variable.

Data
string
[
    "follow1",
    "follow2",
    "follow3",
    "follow4",
    "follow5",
    "follow6",
    "follow7",
    "follow8",
    "follow9"
]

CodePudding user response:

You should convert your data structure to JSON exactly once at the very end, immediately before you write the result to the file.

As it stands, you are converting everything to JSON at every opportunity. So every time you try to add, say, an array to your data structure you instead add a string of JSON representing that array.

CodePudding user response:

First of all to do something you need both data in json

  • Make 2 arrays
  • Remove duplicates
  • Then push data without duplicates.

Put everything together

let allTogether = data.push(...oldUser);

Create unique array

uniq = [...new Set(allTogether )];

Finally set this unique data to specific key

user_follwos.user1 = uniq

Hope this is what you need

  • Related