我想知道无论如何要在JSON序列化中重命名属性?
var obj = data.Select(p => new
{
id = p.Id,
text = p.Name,
a_attr = new { data_extra = new { Weight = p.Weight, MaxScore = p.MaxScore} },
}).ToList();
序列化后,应将data_extra重命名为data-extra
答案 0 :(得分:0)
我建议切换到DataContractSerializer(MSDN Link)以便于重命名属性值。您还需要为数据创建一些小类。见下文:
[DataContract]
public class ReturnObject // Feel free to name to something more suitable
{
[DataMember(Name="id")]
public int Id {get; set;} // Int assumed
[DataMember(Name="text")]
public string Name {get; set;}
[DataMember(Name="a_attr")]
public ReturnObjectAttributes Attributes {get; set;}
}
[DataContract]
public class ReturnObjectAttributes // Feel free to name to something more suitable
{
[DataMember(Name="data-extra")]
public ExtraData ReturnObjectAttrData {get; set;}
}
[DataContract]
public class ExtraData // Feel free to name to something more suitable
{
[DataMember]
public decimal Weight{get; set;} // Decimal assumed
[DataMember]
public decimal MaxScore {get; set;} // Decimal assumed
}
// Then process
data.Select(p => new ReturnObject()
{
Id = p.Id,
Name = p.Name,
Attributes = new ReturnObjectAttributes()
{
ExtraData = new ReturnObjectAttrData()
{
Weight = p.Weight,
MaxScore = p.MaxScore
}
}).ToList();
您需要做的就是将其序列化 - 请参阅提供的MSDN链接中的信息。