JSON データがいくつかありますが、すべてのキーが大文字です。それらを解析してキーをより低いものに変換する方法は? jQueryを使用しています。
例えば:
JSON データ:
{"ID":1234, "CONTENT":"HELLO"}
望ましい出力:
{id:1234, content:"HELLO"}
JSON データがいくつかありますが、すべてのキーが大文字です。それらを解析してキーをより低いものに変換する方法は? jQueryを使用しています。
例えば:
JSON データ:
{"ID":1234, "CONTENT":"HELLO"}
望ましい出力:
{id:1234, content:"HELLO"}
これはどう:
json.replace(/"([^"]+)":/g,function($0,$1){return ('"'+$1.toLowerCase()+'":');}));
正規表現はキー名 $1 をキャプチャし、小文字に変換します。
ライブデモ: http://jsfiddle.net/bHz7x/1/
[編集] @FabrícioMatté のコメントに対処するために、単語の文字のみに一致する別のデモ: http://jsfiddle.net/bHz7x/4/
プロパティを反復処理して小文字のプロパティを作成し、古い大文字のプロパティを削除します。
var str = '{"ID":1234, "CONTENT":"HELLO"}';
var obj = $.parseJSON(str);
$.each(obj, function(i, v) {
obj[i.toLowerCase()] = v;
delete obj[i];
});
console.log(obj);
//{id: 1234, content: "HELLO"}
または、古いオブジェクトのプロパティから新しいオブジェクトを作成することもできます:
var obj = $.parseJSON(str),
lowerCased = {};
$.each(obj, function(i, v) {
lowerCased[i.toLowerCase()] = v;
});
それは機能です:
function JSON_Lower_keys(J) {
var ret={};
$.map(JSON.parse(J),function(value,key){
ret[key.toLowerCase()]=value;
})
return ret;
}
それは呼び出しです:
console.log(JSON_Lower_keys('{"ID":1234, "CONTENT":"HELLO"}'))