2009-09-24 18 views
6

Nesne Özelliklerine yerleştirilebilen, bir .NET Sınıfındaki XmlElement veya XmlAttribute eşdeğerini gerçekleştirecek eşdeğer bir Öznitelik var mı? Ben Kontrolör sınıfında ASP.NET MVC çerçeveler 'Json' yöntemiyle kullanılan JavaScriptSerializer, istiyorumXmlAttribute/XmlElement için JavaScript eşdeğeri

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

: Bu aşağıdaki benzer XML dönecekti

[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; } 
} 

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

Dönüş aynı biçimlendirilmiş sonuçları:

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

Halen Json yöntemi ile nesne çıkışı, döndürür:

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

Şimdi, bu örnek süper basitleştirilmiş ve burada yaptığım tek şey özellik adları ancak harf durumu değiştirilebilir olduğunu fark daha gelişmiş senaryolar Özellik ismini tamamen başka bir şeye yeniden uyarlayabilirim ...

System.Web.Script.Serialization bir ScriptIgnoreAttribute özniteliği içerir, ancak bu yalnızca serileştirme sırasında özelliği göz ardı etmek için JavaScriptSerializer'a bildirir; ancak gerçek çıktının isimlerini veya formatını değiştirir misiniz?

cevap

2

JavaScript serializer (.NET 2.0) ile, gerçekten değil ...
DataContractSerializer (.NET 4.0,) ile, evet.


elinizdeki tüm alternatifler JavaScriptSerializer.Deserialize - how to change field names

bakınız. Yerleşik serileştiriciden, gerçekten yararlı değildir Json.NET kullanmak olduğunu fark hazır olduğunuzda

, Newtonsoft.JSON bir başvuru ekleyin ve böyle yapmak:

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