2010-12-03 1 views
3

JSON으로 직렬화하면 개체 배열을 제공하는 List가 있습니다. 다음과 같이 그러나, 나는 구조 할 직렬화 된 버전이 필요합니다JSON 직렬 변환기를 사용하여 C#의 각 개체에 대해 명명 된 속성을 사용하여 개체 배열을 serialize합니다.

{ 
    "item3":{ 
    "id":3, 
    "name":"monkey" 
    }, 
    "item4":{ 
    "id":4, 
    "name":"turtle" 
    } 
} 

을 현재 JSON 직렬화는 다음과 같이 구성되어있다 :

[ 
    { 
    "id":3, 
    "name":"monkey" 
    }, 
    { 
    "id":4, 
    "name":"turtle" 
    } 
] 

내 목표는 항목 ID에 의해 배열을 참조 할 수있다 대신 숫자 인덱스 (예 : arr [ "item3"] .name 대신 arr [0] .name). 나는 PC가없는

: 그렇지 않은 경우 (DICT 및 직렬화)

var dict = list.ToDictionary(
    item => "item" + item.id); 

: 당신은 수도

답변

2

은 사전에 데이터를 넣는 것은 JaveScripySerializer 충분히이라고했다 예를 들어보기에 편리하지만 다음을 수행 할 수 있어야합니다.

  • encapsula 테드리스트/배열
  • 가 사전에 키 행된 추가 데이터 반복, 커스텀 시리얼의 커스텀 시리얼
  • 와 랩퍼 형 연관 시리얼을 만든 후 JavaScriptSerializer 클래스
  • 를 사용 항목, 즉 data.Add ("item"+ i, list [i]);

당신 RegisterConverters를 통해 연관 사용자 지정지도 : 당신은 너무 것을 필요로하지 않는 한 직렬화를 작성할 필요가 없습니다 http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.registerconverters.aspx

참고.

막히면 나중에 예를 들어 보겠습니다.

+0

나는 이것이 잘 동작 할 것이라고 생각한다. 신속한 응답 주셔서 감사합니다 :) – chrelad

+0

@chrelad - 또한 업데이 트를 참조하십시오 –

+0

좋아, 그 덕분에 ... 나는 RegisterConverters 사업에 뛰어 들기 전에 그 기회를 제공 할 것입니다. 고마워 마크 – chrelad

관련 문제