Пользовательские имена DataMember для десериализации класса JSON - PullRequest
4 голосов
/ 08 сентября 2011

Мне не удается указать собственные имена для свойств. Я получаю некоторый JSON с сервера (который я не могу изменить) с некоторыми некрасивыми именами свойств. Я хотел бы, чтобы код C # придерживался соглашений об именах.

Ниже приведен код, который у меня есть (result0.StringValue остается нулевым):

  [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);
    }
  }

1 Ответ

4 голосов
/ 08 сентября 2011

Вам необходимо использовать DataContractJsonSerializer с этими атрибутами. Я считаю, что JavascriptSerializer устарел с .Net 3.5.

...