2011-09-08 5 views
3

속성에 사용자 정의 이름을 지정할 수 없습니다. 추한 속성 이름으로 서버에서 JSON을받습니다 (변경할 수 없습니다). 명명 규칙을 고수하기 위해 C# 코드를 사용하고 싶습니다. 다음은 JSON 클래스를 deserialize하기위한 사용자 정의 DataMember 이름

내가 가지고있는 코드입니다 (result0.StringValue가 null 유지) :

[TestClass()] 
    public class WebServiceResultConverterTest 
    { 
    [DataContract(Name = "SimpleObject")] 
    private class SimpleObject 
    { 
     [DataMember(Name = "str_value")] 
     public String StringValue { get; set; } 

     [DataMember(Name = "int_value")] 
     public String IntValue { get; set; } 
    } 

    [TestMethod()] 
    public void DeserializeTest() 
    { 
     String input0 = @"{ 
      ""str_value"": ""This is a test string"", 
      ""int_value"": 1664 
     }"; 

     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     SimpleObject result0 = serializer.Deserialize<SimpleObject>(input0); 

     Assert.AreEqual("This is a test string", result0.StringValue); 
     Assert.AreEqual(1664, result0.IntValue); 
    } 
    } 

답변

4

당신은 그 속성으로 DataContractJsonSerializer를 사용해야합니다. 난 JavascriptSerializer 지금은. NET 3.5로 구식 믿습니다.

+0

감사합니다. 일부 데이터 멤버에 대해 JSON을 구문 분석하는 사용자 지정 방식을 지정하는 것은 어떤 의미입니까? –

+0

그것은 어떤 종류의 제어가 필요한지에 달려 있습니다. JSON.NET http://json.codeplex.com/에서 datacontract를 제어 할 수 있습니다. JSONConverter를 만들 수 있습니다. 그렇지 않으면 데이터 계약 하나를 사용하여 직렬화하는 방법을 정의하는 서로 게이트 클래스를 만들 수 있습니다. http://msdn.microsoft.com/en-us/library/system.runtime.serialization.idatacontractsurrogate.aspx –