将JSON对象的字段转换为标题大小写

时间:2015-05-07 10:02:57

标签: javascript jquery regex json

我有一个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(); });
}

1 个答案:

答案 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");