3
我无法管理为属性指定自定义名称。我从服务器收到一些JSON(我无法更改),并带有一些难看的属性名称。我希望C#代码坚持命名约定。自定义DataMember名称以反序列化JSON类
下面是我的代码(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);
}
}
谢谢,这是有效的。有没有任何意思指定一些自定义的方式来解析一些数据成员的JSON? –
这取决于你需要什么样的控制。我发现JSON.NET http://json.codeplex.com/允许更多的控制数据合同。你可以创建'JSONConverter's。否则,您可以创建代理类来定义如何使用数据契约序列化 - http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.idatacontractsurrogate.aspx –