2012-01-11 2 views
4

json.parse로 구문 분석 한 일부 json 형식의 데이터가 있습니다. 내가 가지고있는 문제는 가변 길이 이름의 길이입니다 :변수 이름을 줄여 json 문자열 크기를 줄입니다.

MyObjectName.SuperLongPropertyName; 
MyObjectName.AnotherLongPropertyName; 

등등. json을 생성하기 위해 JavascriptSerializer와 커스텀 JavascriptConverter를 사용하고 있습니다. 여러 아약스 호출에 사용되며 데이터는 약 70K입니다. 내가

a.a; 
    a.b; 

에 변수를 변경할 수 있다면

그러나, JSON 문자열 크기의 절반을 깎아 수 있었다.

서버의 serialization/deserialization 클래스를 쉽게 변경할 수 있습니다. 그러나 클라이언트 측에서는 코드 내에서 이러한 객체를 사용하기 때문에 까다로울 수 있습니다. 그리고 나서 변수 이름을 변경하더라도 자바 스크립트 디버거에서 디버깅하기가 매우 어렵습니다.

a) 클라이언트의 기존 변수 이름을 변환하고 b) 가독성과 디버깅 기능을 유지하는 데 좋은 제안이 있습니까?

감사합니다.

+0

진짜 질문은 왜 더 짧은 json 문자열을 원하겠습니까? 많은 양의 데이터를 보내고 있습니까? 70k는 그다지 놀랍지 않다. – hoppa

+0

속성 이름과 짧은 이름의 정렬 된 맵 (발생 횟수 기준)을 빌드 할 수있다. 그 짧은 이름으로 json을 다시 작성하고 map + json을 보냅니다. ;) – Yoshi

답변

7

transparent HTTP gzip compression을 사용하십시오. 그런 다음 서버는 전송 된 데이터를 압축하여 웹 브라우저에서 다시 해독합니다.

gzip은 사용자가 제안한 것과 정확히 일치합니다. 은 더 좋은 경우에만입니다. 일부 긴 반복 이름에 대한 정적 별칭을 선택하는 대신 gzip은 모든 이름에 대해 별칭을 선택하고 가장 짧은 별칭을 가장 많이 발생하는 별칭에 할당합니다. 또한 gzip은 구문을 신경 쓰지 않으므로 , "SuperLongName": { (구두점 및 공백 포함)을 단일 심볼에 할당 할 수 있습니다.

+0

ok, 이것이 하늘빛과 어떻게 작동하는지 보도록하겠습니다 ... 나는 더 프로그램적인 옵션을 원했지만 gzip은 결국 더 잘 작동 할 것입니다. – frenchie

관련 문제