Javascript, Ramda, Typescript- Rename key to an correct case

Viewed 26

I have an object with keys in camelCase

{
  "studentName": "ABC",
  "studentId": "12345",
  "age": 18,
  "submittedAt": "xxxxxx"
}

I want to convert object above into keys snake_case

{
  "student_name": "ABC",
  "student_id": "12345",
  "age": 18,
  "submitted_at": "xxxxxx"
}

I have a function to convert from camelCase to snakeCase

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

However, I am quite confused about how to convert keys inside JSON object. Any suggetion is appreciated.

2 Answers
function convertObjectKeys(object) {
  const newObject = new Object
  const keys = Object.keys(object)

  keys.forEach((k) => {
    newObject[camelToSnakeCase(k)] = object[k] 
  })

  return newObject
}

You could use this approach.

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

const myObj = {
  "studentName": "ABC",
  "studentId": "12345",
  "age": 18,
  "submittedAt": "xxxxxx"
}


Object.keys(myObj).forEach((key) => {
  const newKey = camelToSnakeCase(key);

  if(newKey !== key) {
    myObj[newKey] = myObj[key];
    delete myObj[key];
  }
    
})


console.log(myObj)

Related