JavaScript JSON的key 下劃線格式與駝峯格式互相轉換

我們編碼的格式是使用駝峯式還是下劃線格式,這個爭論由來已久,這不,我負責的vue.js前端剛剛做好,發現後臺接口是使用Python寫的,導致接口的所有字段都是下劃線格式的,而我又希望接口改成駝峯格式,後臺開發肯定不幹,so,我自己動手,在發送請求的時候,將駝峯改成下劃線格式,在獲取響應的時候,將下劃線格式轉換成駝峯格式,下面是代碼:

// 字符串的下劃線格式轉駝峯格式,eg:hello_world => helloWorld
function underline2Hump(s) {
  return s.replace(/_(\w)/g, function(all, letter) {
    return letter.toUpperCase()
  })
}

// 字符串的駝峯格式轉下劃線格式,eg:helloWorld => hello_world
function hump2Underline(s) {
  return s.replace(/([A-Z])/g, '_$1').toLowerCase()
}

// JSON對象的key值轉換爲駝峯式
function jsonToHump(obj) {
  if (obj instanceof Array) {
    obj.forEach(function(v, i) {
      jsonToHump(v)
    })
  } else if (obj instanceof Object) {
    Object.keys(obj).forEach(function(key) {
      var newKey = underline2Hump(key)
      if (newKey !== key) {
        obj[newKey] = obj[key]
        delete obj[key]
      }
      jsonToHump(obj[newKey])
    })
  }
}

// JSON對象的key值轉換爲下劃線格式
function jsonToUnderline(obj) {
  if (obj instanceof Array) {
    obj.forEach(function(v, i) {
      jsonToUnderline(v)
    })
  } else if (obj instanceof Object) {
    Object.keys(obj).forEach(function(key) {
      var newKey = hump2Underline(key)
      if (newKey !== key) {
        obj[newKey] = obj[key]
        delete obj[key]
      }
      jsonToUnderline(obj[newKey])
    })
  }
}

代碼就不解釋了,一看就懂,網上都是關於java轉換的相關資料,JavaScript實現的幾乎沒有,所以就直接造輪子了,代碼很簡單,就是遞歸而已,但是調試花了我很長時間,😓 就醬!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章