9

JSON データがいくつかありますが、すべてのキーが大文字です。それらを解析してキーをより低いものに変換する方法は? jQueryを使用しています。

例えば:

JSON データ:

{"ID":1234, "CONTENT":"HELLO"}

望ましい出力:

{id:1234, content:"HELLO"}
4

5 に答える 5

16

これはどう:

json.replace(/"([^"]+)":/g,function($0,$1){return ('"'+$1.toLowerCase()+'":');}));

正規表現はキー名 $1 をキャプチャし、小文字に変換します。

ライブデモ: http://jsfiddle.net/bHz7x/1/

[編集] @FabrícioMatté のコメントに対処するために、単語の文字のみに一致する別のデモ: http://jsfiddle.net/bHz7x/4/

于 2013-02-04T23:14:04.513 に答える
5

プロパティを反復処理して小文字のプロパティを作成し、古い大文字のプロパティを削除します。

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;
});

フィドル

参考文献:

于 2013-02-04T23:07:06.487 に答える
1

それは機能です:

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"}'))
于 2013-02-04T23:21:50.937 に答える