c# - ASP.net 웹 API:직렬화 할 때 클래스 이름 변경



asp.net-mvc serialization (3)

클래스 이름이 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 를 통해 구성됩니다.

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

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
}

내가 어떻게 할 수 있니?


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

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

웹 사이트 및 프로젝트 >> 웹 사이트는 Visual Studio를 사용하여 ASP.NET 응용 프로그램을 만드는 두 가지 방법입니다. 하나는 프로젝트가없고 다른 하나는 프로젝트 환경입니다. 차이점은 다음과 같습니다.

  1. 솔루션 파일은 프로젝트 환경의 루트 디렉토리와 동일한 디렉토리에 저장됩니다.
  2. 프로젝트 환경에서 배포하기 전에 솔루션 및 프로젝트 파일을 제거해야합니다.
  3. 완전한 루트 디렉토리는 프로젝트가없는 환경에 배포됩니다.

두 가지 접근법을 사용하는 데는 별다른 차이가 없습니다. 그러나 더 오랜 시간이 걸리는 웹 사이트를 만드는 경우 프로젝트 환경을 선택하십시오.





c# asp.net asp.net-mvc serialization