1. 程式人生 > >JavaScript JSON的key 下劃線格式與駝峰格式互相轉換

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:hello_world => helloWorld
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實現的幾乎沒有,所以就直接造輪子了,程式碼很簡單,就是遞迴而已,但是除錯花了我很長時間,? 就醬!