C#에서 JavaScriptSerializer.Deserialize
을 사용하여 필드 이름 변경
클래스는 JSON 데이터를 C# 개체로 역직렬화하는 편리한 방법을 제공합니다. 그러나 기본적으로 JSON 필드 이름을 대상 개체의 속성 이름에 직접 매핑합니다. 이로 인해 JSON 필드 이름이 C# 개체의 속성 이름과 일치하지 않으면 역직렬화가 실패할 수 있습니다. JavaScriptSerializer
1. 속성 XmlElement
을 사용하세요.
속성을 사용하여 필드 이름 매핑을 수동으로 설정하는 작업이 포함됩니다. 하지만 원본 게시물에서 언급했듯이 [XmlElement]
에서는 이 방법이 작동하지 않습니다. 대신 JavaScriptSerializer
속성을 사용하여 필드 이름 매핑을 구현해야 합니다. [DataMember]
2. DataContractJsonSerializer
을 사용하세요.
네임스페이스에 제공되는 System.Runtime.Serialization
클래스는 필드 이름 매핑을 위한 보다 강력한 솔루션을 제공합니다. 해당 JSON 필드 이름은 C# 개체 속성에 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>이 예에서
및 user_id
JSON 필드 이름은 각각 C# 개체의 detail_level
및 UserId
속성에 매핑됩니다. DetailLevel
을 사용하여 JSON 데이터를 역직렬화하려면: DataContractJsonSerializer
<code class="language-csharp">using System.Runtime.Serialization.Json; using System.Text; using System.IO; ... DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData)); DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>
및 DataContractJsonSerializer
속성을 사용하면 JSON 역직렬화 중에 필드 이름을 효과적으로 변경하여 JSON 데이터와 C# 개체 간의 올바른 매핑을 보장할 수 있습니다. [DataMember]
위 내용은 역직렬화 중에 이름이 다른 JSON 필드를 C# 속성에 매핑하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!