使用Json.Encode()序列化对象时更改成员名称
问题描述:
我正在寻找一种方法来更改属性的名称,当它被编码为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序列化程序?
答
有几个可能的原因:
- 定义,这将有正确的价值观,然后你的
LatLng
域模型映射到这个视图模型和序列化视图模型视图模型。 - JavaScriptSerializer类不支持属性,但可以编写自定义JavaScriptConverter。
- 使用DataContractJsonSerializer类,该类允许您通过使用
[DataMember]
属性修饰成员名称来定义成员名称。