2012-10-30 1 views
5

내가 ASP.NET MVC 형태를 직렬화 할 때,이 얻을 :PascalCase 속성에서 camelCase 속성 (JavaScript)으로 JavaScript 객체를 복제하려면 어떻게해야합니까?

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

을하지만 JS 코딩 규칙을 일관된 그래서 나는이 원하는 : 내가 대상을 어떻게

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

소문자는 각 속성의 첫 번째 문자입니까? 더 나은 문자열로이 일을 처리하지

또한
var newObj = {}; 
for (var p in o) { 
    newObj[p.substring(0,1).toLowerCase()+p.substring(1)] = o[p]; 
} 
+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

간단한 방법은 개체 위에 반복을하다 Reg exps power를 사용합니까?

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

+0

좀 더 우아한 해결책이 될 수 있습니다. JS 오브젝트로 변환하기 전에 regexp로 JSON 문자열을 대체하십시오. – Damask

0

을 제거 할 수 있습니다 :

+0

실제로 백엔드에서 문자열로 오는 경우 첫 번째 문자열 화가 필요하지 않습니다. – Damask

관련 문제