2009-09-24 9 views
6

XmlElementまたはXmlAttributeに相当する.NETクラスのオブジェクトプロパティに配置できる同等の属性はありますか?私は、コントローラクラスにASP.NET MVCフレームワーク 'JSON' メソッドによって使用されるJavaScriptSerializerを、持っていると思いますXmlAttribute/XmlElementはJavaScriptSerializerに相当します

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

を:これは、次のようなXMLを返します

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

そのような
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に指示するだけですしかし、実際の出力の名前や形式を変更しますか?

答えて

2

JavaScriptシリアライザ(.NET 2.0)では、実際には...
DataContractSerializer(.NET 4.0)では、はい。


は、あなたが持っているすべての選択肢を JavaScriptSerializer.Deserialize - how to change field names

を参照してください。あなたはNewtonsoft.JSONへの参照を追加、JSON.NETを使用し、内蔵のシリアライザは本当に便利ではないことを実現する準備が整いました

、このようにそれを実行します。

[JsonProperty(PropertyName = "FooBar")] 
public string Foo { get; set; } 
関連する問題