programing

Json.net의 늘필드 무시

i4 2023. 3. 2. 21:59
반응형

Json.net의 늘필드 무시

JSON에 연재해야 할 데이터가 있습니다.JSON을 쓰고 있어요.NET. 코드 구조는 다음과 같습니다.

public struct structA
{
    public string Field1;
    public structB Field2;
    public structB Field3;
}

public struct structB
{
    public string Subfield1;
    public string Subfield2;
}

문제는 내 JSON 출력에는Field1또는Field2또는Field3사용하는 필드에 따라 다릅니다(즉, null이 아닙니다).기본적으로는 JSON은 다음과 같습니다.

{
    "Field1": null,
    "Field2": {"Subfield1": "test1", "Subfield2": "test2"},
    "Field3": {"Subfield1": null, "Subfield2": null},
}

내가 쓸 수 있다는 거 알아NullValueHandling.Ignore단, 다음과 같은 JSON을 얻을 수 있습니다.

{
    "Field2": {"Subfield1": "test1", "Subfield2": "test2"},
    "Field3": {}
}

내가 필요한 건 이거야

{
    "Field2": {"Subfield1": "test1", "Subfield2": "test2"},
}

이것을 실현하는 간단한 방법이 있습니까?

네, 사용하셔야 합니다.JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore.

, 구조체는 값 유형이기 때문에 예상 결과를 얻으려면 필드2, 필드3을 null로 표시해야 합니다.

public struct structA
{
    public string Field1;
    public structB? Field2;
    public structB? Field3;
}

아니면 구조 대신 수업을 이용하세요.

문서:특수한 값 처리 거열

JsonProperty 속성을 관련 속성에 적용하여 늘 값 처리를 설정할 수도 있습니다.를 참조해 주세요.Reference다음 예시의 속성:

주의:JsonSerializerSettings이 속성을 덮어씁니다.

public class Person
{
    public int Id { get; set; }
    
    [JsonProperty( NullValueHandling = NullValueHandling.Ignore )]
    public int? Reference { get; set; }

    public string Name { get; set; }
}

언급URL : https://stackoverflow.com/questions/9819640/ignoring-null-fields-in-json-net

반응형