Newtonsoft.Json lowercase keys


참조 URL
  1. http://stackoverflow.com/questions/6288660/net-ensuring-json-keys-are-lowercase
  2. http://nyqui.st/json-net-newtonsoft-json-lowercase-keys
  3. notation (헝가리언, 카멜, 파스칼 표기법)

 


JSON 타입으로 통신을 하면 Key와 Value로 변환을 해야 한다. 그렇지만 Newton에서는 기본적으로 클래스와 같은 형식으로 대소문자로 Key값을 변환하여 준다. C#에서 객체를 만들때 사용하는 네이밍 규칙과 JSON ( or Javascript) 에서 사용하는 네이밍 규칙이 서로 달라 혼선이 빚어 질 수 있다. 그래서 JSON타입으로 변환 할 때 소문자로 변환 할 수 있는 방안을 적용하면 일괄적으로 적용이 될 것이다. 적용 방법은 아래와 같다.



C# 네이밍 규칙


 C#에서는 파스칼식과 카멜식을 적절히 사용할 것을 권장하고 있다. 특별한 명명 규칙이 없다면 암묵적으로 프로퍼티는 파스칼식으로, 내부 필드 변수는 카멜식으로 명명한다.


- 파스칼 식 : PropertyName

- 카멜 식 : propertyName 


JSON or Javascript 네이밍 규칙


 Javascript는 기본적으로 카멜식으로 명명하여 사용하고 있다. 





[코드2] LowercaseContractResolver 클래스 코드


[코드3] 소문자로 변환



 위 방법은 '코드1', '코드2' 방법은 세팅 값을 바꿔서 치환하는 방법이고 이와는 다른 방향으로 치환해서 사용하는 방법도 있다. 



[코드3]  Static 클래스로 만듬



[코드4] 선언된 Static 클래스를 사용



 이런 방법으로 자바스크립트와 호환성을 같도록 하면서 일관적으로 사용할 수 있다.




[그림1] Newton JSON.NET의 성능 비교표



+ Recent posts