c# - 객체 직렬화 개념 serialize




ASP.net 웹 API:직렬화 할 때 클래스 이름 변경 (2)

제품에 대한 데이터 전송 객체 클래스가 있습니다.

public class ProductDTO
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}

Asp.net은 JSON ( JSON.NET 사용) 또는 XML 객체를 직렬화 할 때 ProductDTO 객체를 생성합니다.

그러나, 나는 일련의 속성을 사용하여 ProductDTO 에서 Product 직렬화하는 동안 이름을 변경하려고합니다.

[Name("Product")]
public class ProductDTO
{
    [Name("ProductId")]
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}

내가 어떻게 할 수 있니?

https://code.i-harness.com


옵션은 다음과 같이 기본 .Net 직렬화 속성 을 사용하는 입니다.

[DataContract(Name = "Product")]
public class ProductDTO
{
    [DataMember(Name = "ProductId")]
    public Guid Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    // Other properties
}

클래스 이름이 JSON 직렬화 된 데이터로 변환해야하는 이유는 알 수 없지만 XML의 경우 DataContractAttribute , 구체적으로 Name 속성을 통해 유형 이름을 제어 할 수 있어야합니다.

using System.Runtime.Serialization;

[DataContract(Name = "Product")]
public class ProductDTO
{
    [DataMember(Name="ProductId")]
    public Guid Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    // Other properties
}

DataContractAttribute는 ASP.NET 웹 API가있는 기본 XML serializer가 DataContractSerializer이므로 관련이 있습니다. DataContractSerializer는 직렬화 된 클래스에 적용된 DataContractAttribute와 직렬화 된 클래스 멤버에 적용된 DataMemberAttribute 를 통해 구성됩니다.







serialization