JavaScriptSerializer를 사용하여 JSON과 .NET 속성 이름 간의 불일치 처리
JSON 필드 이름을 .NET 개체 속성에 매핑할 때 .NET의 JavaScriptSerializer
을 조정해야 하는 경우가 있습니다. 예를 들어 "user_id"와 같은 JSON 필드는 "UserId"라는 .NET 속성에 매핑되어야 할 수 있습니다. 주석을 사용하여 JavaScriptSerializer
으로 필드 이름을 직접 사용자 정의하는 것은 불가능합니다.
우수한 솔루션: 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>
이 코드는 JSON "user_id" 필드가 .NET 개체의 UserId
속성을 올바르게 채우는지 확인합니다.
DataContractJsonSerializer 테스트
다음은 기능을 보여주는 샘플 단위 테스트입니다.
<code class="language-csharp">using System.Runtime.Serialization.Json; using System.Text; using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class DataContractJsonSerializerTest { [TestMethod] public void DataObjectSerializationTest() { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); string jsonData = "{\"user_id\":1234,\"detail_level\":\"low\"}"; //Example JSON using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonData))) { DataObject dataObject = (DataObject)serializer.ReadObject(ms); Assert.IsNotNull(dataObject); Assert.AreEqual("low", dataObject.DetailLevel); Assert.AreEqual(1234, dataObject.UserId); } } }</code>
열거형에 대한 중요 참고 사항:
서버의 JSON 응답에서 열거형을 처리할 때 잠재적인 구문 분석 오류를 방지하려면 DataContractJsonSerializer
을 사용하여 역직렬화하기 전에 열거형을 문자열로 변환하세요. 직접 열거형 매핑은 문제가 될 수 있습니다.
위 내용은 JavaScriptSerializer를 사용하여 JSON 필드 이름을 다른 .NET 속성 이름에 매핑하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!