相关疑难解决方法(0)

JavaScriptSerializer.Deserialize - 如何更改字段名称

简介:在使用JavaScriptSerializer.Deserialize时,如何将JSON数据中的字段名称映射到.Net对象的字段名称?

更长版本:我从服务器API(未在.Net中编码)向我发送以下JSON数据

{"user_id":1234, "detail_level":"low"}
Run Code Online (Sandbox Code Playgroud)

我有以下C#对象:

[Serializable]
public class DataObject
{
    [XmlElement("user_id")]
    public int UserId { get; set; }

    [XmlElement("detail_level")]
    public DetailLevel DetailLevel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

其中DetailLevel是一个枚举,其中"低"作为其中一个值.

此测试失败:

[TestMethod]
public void DataObjectSimpleParseTest()
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    DataObject dataObject = serializer.Deserialize<DataObject>(JsonData);

    Assert.IsNotNull(dataObject);
    Assert.AreEqual(DetailLevel.Low, dataObject.DetailLevel);
    Assert.AreEqual(1234, dataObject.UserId);
}
Run Code Online (Sandbox Code Playgroud)

最后两个断言失败,因为这些字段中没有数据.如果我将JSON数据更改为

 {"userid":1234, "detaillevel":"low"}
Run Code Online (Sandbox Code Playgroud)

然后它通过.但我不能改变服务器的行为,我希望客户端类在C#语言中具有良好命名的属性.我不能使用LINQ to JSON,因为我希望它在Silverlight之外工作.看起来XmlElement标签没有任何效果.我不知道我在哪里知道它们是相关的,它们可能不是.

你如何在JavaScriptSerializer中进行字段名称映射?它可以完成吗?

c# serialization parsing json javascriptserializer

72
推荐指数
6
解决办法
10万
查看次数

标签 统计

c# ×1

javascriptserializer ×1

json ×1

parsing ×1

serialization ×1