.net - JavaScriptSerializer 的 XmlAttribute/XmlElement 等价物

标签 .net javascript serialization

是否有一个等效的属性可以放置在 .NET 类中的对象属性上,以执行与 XmlElement 或 XmlAttribute 等效的操作?

[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,由 Controller 类中的 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; }

关于.net - JavaScriptSerializer 的 XmlAttribute/XmlElement 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472090/

相关文章:

c - 在文件描述符上使用 fwrite/将文件描述符转换为文件指针

c# - 如何从 VB6 应用程序向我的 C# 应用程序发送消息

c# - SqlDatareader GetValue 根据系统日期格式返回日期值

javascript - 获取鼠标在 Canvas 中的位置

javascript - 使 Click 事件在动画期间不可用

c# - 序列化多个对象

.net - 可以使用 OnDeserializedAttribute 代替 IDeserializationCallback 接口(interface)吗?

c# - 事务性 CloudBlob

.net - MVP 模式,一个演示者有多少 View ?

javascript - 将目标 ="_blank"添加到 anchor 标记