【问题标题】:XmlAttribute/XmlElement equivalent for JavaScriptSerializer等效于 JavaScriptSerializer 的 XmlAttribute/XmlElement
【发布时间】:2009-09-24 14:31:09
【问题描述】:

是否有一个等效的 Attribute 可以放置在 .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>

我想要控制器类中的 ASP.NET MVC Frameworks 'Json' 方法使用的 JavaScriptSerializer:

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 在序列化时忽略该属性,但是似乎没有任何东西可以更改实际输出的名称或格式?

【问题讨论】:

    标签: .net javascript serialization


    【解决方案1】:

    使用 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; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2018-11-20
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多