Простой способ изменения оболочки json-ключей для camelCase от snake_case
У меня много json-синтаксического анализа, и все json, которые я получаю, имеют ключи в случае с змеей, такие как user_name
. И для синтаксического анализа мне нужно это в случае с верблюдом, как userName
.
Образец json файла будет выглядеть так:
[{
"user_id" : 1,
"user_name" : "Abcd"
},
{
"org_id" : 11,
"org_name" : "some_name"
}
...
]
Ожидаемый результат:
[{
"userId" : 1,
"userName" : "Abcd"
},
{
"orgId" : 11,
"orgName" : "some_name"
}
...
]
Json, который я получаю, не имеет какой-либо фиксированной нотации, и это может быть что угодно. Но все ключи будут в случае с змеей. И мне нужно преобразовать его в camelCase.
То, что я не могу сделать, это найти и заменить, потому что он также заменяет строки обмоток змеи в значениях.
Есть ли простой способ, который может сделать то же самое?
Вы можете сделать следующее:
var keys = [];//this will contain the json with desired output
for(var i = 0;i<myObj.length;i++)//myObj is the variable that contains your json
{
Object.keys(myObj[i]).forEach(function(key){
if(keys.indexOf(key) == -1)
{
var newValue = {};
var value = myObj[i][key];
key = key.replace(/_([a-z])/g, function (g) { return g[1].toUpperCase(); });
newValue[key] = value;
keys.push(newValue);
}
});
}
//console.log(keys);
Надеюсь это поможет :)
Вы можете использовать пакет npm: camelcase-keys-deep
var arr = [{
"user_id": 1,
"user_name": "Abcd"
},
{
"org_id": 11,
"org_name": "some_name"
}
];
arr.forEach(a => {
Object.keys(a).forEach(k => {
newK = k.replace(/(\_\w)/g, (m) => m[1].toUpperCase());
a[newK] = a[k];
delete a[k];
});
});
console.log(arr);
Таким образом, реализация AKSHAY JAIN довольно прочная, но она удалит свойства, которые не находятся в случае с змеей. Я исправил реализацию.
var arr = [{
"user_id": 1,
"user_name": "Abcd"
},
{
"org_id": 11,
"org_name": "some_name"
},
{
"personId": 12,
"personName": "otherName"
}];
arr.forEach(a => {
Object.keys(a).forEach(k => {
newK = k.replace(/(\_\w)/g, (m) => m[1].toUpperCase());
if (newK != k) {
a[newK] = a[k];
delete a[k];
}
});
});
console.log(arr);
- Вопросы
- Javascript
- Простой способ изменения оболочки json-ключей для camelCase от snake_case