2011-11-18 63 views
1

我正在尋找一種方法來更改屬性的名稱,當它被編碼爲JSON,其工作方式類似於DisplayAttribute可用於更改它的顯示名稱。使用Json.Encode()序列化對象時更改成員名稱

例如,如果我編碼以下類JSON字符串

public class LatLng 
{ 
    public double Latitude { get; set; } 
    public double Longitude { get; set; } 
} 

string result = Json.Encode(new LatLng{ Latitude = 10, Longitude = 20 }); 

的結果將是:{"Latitude":10,"Longitude":20}

有用來創建一個JsonNameAttribute添加到類的每個屬性的方式,如下所示

public class LatLng 
{ 
    [JsonName("lat")] 
    public double Latitude { get; set; } 
    [JsonName("lng")] 
    public double Longitude { get; set; } 
} 

string result = Json.Encode(new LatLng{ Latitude = 10, Longitude = 20 }); 

所以結果會是:{"lat":10,"lng":20}

這樣做可以不創建我自己的JSON序列化程序?

回答

0

有幾個可能的原因:

  • 定義,這將有正確的價值觀,然後你的LatLng域模型映射到這個視圖模型和序列化視圖模型視圖模型。
  • JavaScriptSerializer類不支持屬性,但可以編寫自定義JavaScriptConverter
  • 使用DataContractJsonSerializer類,該類允許您通過使用[DataMember]屬性修飾成員名稱來定義成員名稱。
相關問題