.NET JSON 직렬화 중 필드 무시 [XmlIgnore]와 비슷합니까?


80

.NET 3.5 sp1에서 JSON 문자열로 브라우저에 전송되는 POCO 클래스가 있습니다. 기본 JSON 직렬화를 사용하고 있으며 무시하고 싶은 필드가 있습니다. 직렬화되지 않도록 [System.Xml.Serialization.XmlIgnore]와 유사한 속성을 추가하고 싶습니다.

답변:


121

내 모델 에서 ScriptIgnore 속성을 다음과 같이 사용합니다 .

public class Item
{
    [ScriptIgnore]
    public Item ParentItem { get; set; }
}

이 특정 시나리오에서는 Json serializer에서 순환 참조 오류가 발생했기 때문에 무시했습니다. 나는 한 SO 여기에 비슷한 질문을 I는 모델과 뷰 모델의 차이에 켜져 때.


1
POCO가 아니라 생성 된 EntityModel 인 경우 생성 된 코드를 편집하고 싶지 않은 경우 생성 된 엔티티 모델에 ScriptIgnore 속성을 추가하는 해결 방법이 있습니까?
hazimdikenli 2010

@hazimdikenli 당신은 이것을 위해 부분 클래스를 활용해야 할 수도 있습니다.
Anand

11
이것이 작동하도록 "System.Web.Extensions"에 대한 참조를 추가하는 것을 잊지 마십시오
Levitikon

1
이것은 내 toJson (Model)이 원치 않는 필드를 가져 오는 것을 막는 데 도움이되었지만 이상적으로는 API를 사용하면 교차 주석을 피하기 위해 새 모델과 컨트롤러를 사용하여 새 영역을 만들어야하지만 너무 게으르다. 감사합니다 +1
Piotr Kula

27
[ScriptIgnore] 

허커 베리입니다.


1
사실은 "Huckle Bearer"인데 노력과 영화에 대해 +1을 드리겠습니다. :)
Bryan Ray

8
원래 대답은 맞습니다. 그는 "허클 베어러"가 아니라 "허클베리"라고 말합니다. imsdb.com/scripts/Tombstone.html
heisenberg 2013

5
... "Huckleberry Finn"에서와 같이-본능적으로 "올바른 일을하기 위해"노력하는 전형적인 "모든 사람"에 대한 언급-항상 믿을 수있는 진정한 친구 ... 따라서 "I 'm your Huckleberry" , "당신은 나를 믿을 수 있습니다"를 의미합니다.
John Holliday

2

[ScriptIgnore(ApplyToOverrides = true)]텍스트 템플릿 (.tt) 파일에 를 추가하기 만하면 됩니다.

여기에 내 텍스트 템플릿의 일부가

#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#

코드를 삽입하면 codeStringGenerator내 클래스 위의 줄이 자동으로 생성되고 다음과 같이 표시됩니다.

[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }

또한 UsingDirectives삽입 할 함수를 수정해야했습니다."using System.Web.Script.Serialization;"


ApplyToOverrides가상 재산에 매우 중요 할 것 같다
토드

1

속성을 내부로 설정합니다. 하지만 구조에 따라 다릅니다. 참작하다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.