JSON 필드 이름을 .NET 개체 속성에 매핑
JSON 데이터를 .NET 개체로 구문 분석하려면 JSON 필드 이름을 해당 개체 속성에 매핑해야 하는 경우가 많습니다. 이는 JSON 필드 이름이 .NET 속성 이름과 다를 때 중요합니다. JavaScriptSerializer.Deserialize
이 편리해 보일 수도 있지만 이름 불일치를 항상 안정적으로 처리하는 것은 아닙니다. 보다 강력한 솔루션은 DataContractJsonSerializer
.
신뢰할 수 있는 매핑을 위해 DataContractJsonSerializer 사용
DataContractJsonSerializer
은 DataMember
속성을 통해 필드 이름 매핑을 정확하게 제어할 수 있습니다. 방법은 다음과 같습니다.
<code class="language-csharp">[DataContract] public class DataObject { [DataMember(Name = "user_id")] public int UserId { get; set; } [DataMember(Name = "detail_level")] public string DetailLevel { get; set; } }</code>
이 코드는 DataObject
클래스를 정의합니다. DataMember
속성은 JSON 필드 "user_id" 및 "detail_level"을 각각 .NET 속성 UserId
및 DetailLevel
에 명시적으로 매핑합니다.
역직렬화는 간단합니다.
<code class="language-csharp">DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData)); DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>
이 코드 조각은 JSON 데이터(JsonData
)를 DataObject
인스턴스로 역직렬화합니다.
고려사항:
DataContractJsonSerializer
은 JavaScriptSerializer
에 비해 뛰어난 매핑 기능을 제공하지만 약간 더 장황할 수 있습니다.DetailLevel
속성의 경우 사용자 정의 DataContractResolver
를 사용하면 값 매핑이 용이해집니다.DataContractJsonSerializer
은 Silverlight와도 호환됩니다.위 내용은 JavaScriptSerializer 또는 DataContractJsonSerializer를 사용하여 JSON 필드 이름을 .NET 개체 속성에 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!