我有一个JSON对象,我从数据库中获取(使用Slim和Twig)但是有一个字段有时是大写的,有时是小写的,有时是camelCase,等等。我喜欢该字段成为TitleCase。
我已经有一个将String转换为TitleCase的函数,我在将JSON转换为数组时使用了这个函数(使用这些数组作为jqWidgets的源代码):
\25B6Title
现在我想为JSON对象做同样的事情。我想到的是在使用parseJSON()之后迭代它们,在我想要的字段上使用我的函数并在使用JSON.stringify()之后返回新对象;但是我想知道你是否认为这是解决这个问题的最佳方法,或者你有更好的想法(我不是要求直接的源代码)。
我的JSON示例(我需要TitleCase中的nomFonction和nomEntite):
function toTitleCase(str) {
return str.replace(/\w\S*/g, function (txt) {return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
}
答案 0 :(得分:1)
所以,我做了我想做的事情,它迭代转换为数组的JSON对象并将其转换回JSON。
代码:
// Converts a string to TitleCase
function toTitleCase(str) {
return str.replace(/\w\S*/g, function (txt) {return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
}
/**
* @jsonArray : the array to convert
* <...> : the fields to convert in the JSON
*/
function JSONToTitleCase(jsonArray /**/) {
s = $.parseJSON(jsonArray); // Array from the JSON
var args = Array.prototype.slice.call(arguments, 1); // the fields to convert
// for each JSON object
for (i=0; i < s.length; i++){
// for each field to convert to TitleCase
for (j = 0; j < args.length; j++){
// if the field exists
if (typeof s[i][args[j]] != "undefined"){
// convert it
s[i][args[j]] = toTitleCase(s[i][args[j]]);
}
}
}
// back to JSON
return JSON.stringify(s);
}
用法:
JSONToTitleCase(JSON_Array, fieldtoconvert1, fieldtoconvert2, ...);
就我而言:
JSONToTitleCase(fonctionsEnBase, "nomEntite", "nomFonction");