2012-10-30 16 views
5

私はASP.NET MVCのフォームをシリアル化するとき、私はこれを取得:JavaScriptオブジェクトをPascalCaseプロパティからcamelCaseプロパティ(JavaScript)に複製するにはどうすればよいですか?

{ 
    DestinationId: "e96dd00a-b042-41f7-bd59-f369904737b6", 
    ... 
} 

をしかし、それはJSのコーディング規則で一貫性のあるように、私は、これをしたい:私は、オブジェクトを取るにはどうすればよい

{ 
    destinationId: "e96dd00a-b042-41f7-bd59-f369904737b6", 
    ... 
} 

各プロパティの最初の文字は小文字ですか?

+0

なぜこれが投票されますか? –

答えて

2

もhasOwnPropertyをチェックするために持っている、と

var object = { DestinationId: "e96dd00a-b042-41f7-bd59-f369904737b6" } 
for (var prop in object) { 
    if (object.hasOwnProperty(prop)) { 
    object[ prop.substring(0,1).toLowerCase() + prop.substring(1) ] = object[ prop ]; 
    delete object[ prop ]; 
    } 
} 
+0

なぜあなたはhasOwnPropertyによるチェックをしますか?あなたのObject.prototypeには追加の機能がありますか?それがそうなら - それは良いことではありません。独自のコンストラクタを定義する必要があります。 – Damask

4

簡単な方法は、あなたのオブジェクトの上に反復処理を行うことである。

var newObj = {}; 
for (var p in o) { 
    newObj[p.substring(0,1).toLowerCase()+p.substring(1)] = o[p]; 
} 
+0

より洗練されたソリューションかもしれません - JSオブジェクトに変換する前にregexpでJSON文字列を置き換えてください。 – Damask

0

前のプロパティを削除し、それがより良い文字列としてこれらの事を扱うことではありませんReg Exp Powerを使用しますか?

JSON.parse( JSON.stringify(z).replace( /(\"[^"])([^"]*\"\:)/g, function(all, head, tail) { return head.toLowerCase() + tail; } ) )

+0

実際には、バックエンドからの文字列として最初にstringifyする必要はありません。 – Damask

関連する問題