我們編碼的格式是使用駝峯式還是下劃線格式,這個爭論由來已久,這不,我負責的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實現的幾乎沒有,所以就直接造輪子了,代碼很簡單,就是遞歸而已,但是調試花了我很長時間,😓 就醬!