XmlAttribute/XmlElement的等效JavaScriptSerializer

问题描述:

是否有一个等效属性,可以在将执行的XmlElement或XmlAttribute的等效的.NET类被放置在对象属性?XmlAttribute/XmlElement的等效JavaScriptSerializer

[XmlRoot("objects")] 
public class MyObjects: List<MyObject> { } 

[XmlRoot("object")] 
public class MyObject { 
    [XmlAttribute("name")] 
    public string Name { get; set; } 
    [XmlAttribute("title")] 
    public string Title { get; set; } 
} 

这将返回类似于下面的XML:

<objects> 
    <object name="David" title="Engineer" /> 
    <object name="William" title="Developer" /> 
</objects> 

我想有JavaScriptSerializer,在控制器类中使用的ASP.NET MVC框架 '的Json' 的方法:

public ActionResult Search() { 
    // code to populate data object 
    return Json(data); 
} 

返回相同格式的结果,就像这样:

[{"name":"David","title":"Engineer"},{"name":"William","title":"Developer"}] 

目前,使用JSON方法输出对象,返回:

[{"Name":"David"}, "Title":"Engineer"}, {"Name":"William", "Title":"Developer"}] 

现在,我意识到这一点的例子是超级简单,我在这里所做的唯一事情就是更改属性的名称,但在外壳更高级的场景我可能完全重新映射属性名称到其他东西...

System.Web.Script.Serialization包含一个ScriptIgnoreAttribute属性,但这只是告诉JavaScriptSerializer在序列化时忽略该属性,似乎没有任何东西存在然而改变实际输出的名称或格式?

使用JavaScript序列化程序(.NET 2.0),不是真的...
使用DataContractSerializer(.NET 4.0),是的。


为你所替代见
JavaScriptSerializer.Deserialize - how to change field names

当你准备要认识到内置串行器是不是真的有用,使用JSON.NET,添加引用Newtonsoft.JSON,并做到这一点是这样的:

[JsonProperty(PropertyName = "FooBar")] 
public string Foo { get; set; }