2011-08-09 2 views
0

WebMethod에서 JSON.NET을 사용하여 개체를 수동으로 직렬화하여 엔티티 프레임 워크 순환 참조 문제를 피하십시오.기본 WebMethod 직렬화 대신 JSON.NET 사용

나는 다음과 같은 코드가 있습니다 :

Dim qry = From m In entity.Mediators _ 
      Where m.MediatorNumber = mediatorNumber _ 
      Select m 

For Each mediator In qry 
    mediator.MediatorRestrictionsAvailabilities.Load() 
    customMediator = mediator 
Next 

customJson = JsonConvert.SerializeObject(customMediator, Formatting.Indented) 

문제는 결과가 아니라 JSON 포맷하지 않고 클라이언트에서 구문 분석 할 수 없다는 것입니다;

{ "d": "id": \ "1 \", \ r \ n \ "MediatorId \": 922, \ r \ PFCCode \ ": \"840 \ ", \ r \ n \"이름 ": \"조 \ ", \ r \ n \ "성 \": "스미스 \"\, \ 연구 \ n

나는이 JSON을 JSON으로 다시 일련 화 될 때 일어나는 것을 배운 몇 가지 연구를하고 후

난 내 자신을 어떻게해야합니까. 기본 직렬 변환기를 사용하지 않고 사용자 지정 직렬화를 수행 하시겠습니까?

+0

내가 ASP.NET 웹 서비스를 아시다시피 다른 하나 직렬화를 대체 제공하지 않습니다. 사용자 지정 변환기 만 제공 할 수 있습니다. –

답변

0

나는 문제는 잠시 후, 나는 주어진 here are the suggestions. 내 솔루션은 내가 이미 json으로 객체를 다시 직렬화 할 필요가 없다는 것이 었습니다.

행운과 희망이 일부 도움이 되길 바랍니다. 순환 참조 용으로

+0

크리스가 답장을 보내 주셔서 감사합니다. 당신은 정확하지만 내 경우에는 순환 참조 오류가 발생하기 때문에 원시 serializer를 사용할 수 없습니다. JSON.NET을 사용하여 사용자 정의 JSON을 출력해야한다. – Asmussen

+0

아마도 사용자 정의 .ashx 핸들러를 작성하고 서비스 동작을 시뮬레이트하거나 원형 참조를 직렬화하지 않도록 엔티티 코드를 수정해야 할 것입니다. –

0

이 방법 :

string json = JsonConvert.SerializeObject(
    infoToSerialize, Formatting.Indented, 
    new JsonSerializerSettings{ ReferenceLoopHandling = 
    ReferenceLoopHandling.Ignore 
});