在WCF Json序列化中包含类名

时间:2012-04-26 11:21:28

标签: c# json wcf serialization

这一定是微不足道的,但我似乎无法完成它。鉴于以下数据合同类:

public class SampleItem
{
    public int Id { get; set; }
    public string StringValue { get; set; }
}

当我的WCF服务反序列化为JSON时,提供以下输出:

[{"Id":1,"StringValue":"Hello"}]

有没有办法包含课程名称?即:

"SampleItem": [{"Id":1,"StringValue":"Hello"}]

1 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

private dynamic AddClassName(SampleItem item)
{
      return new {SampleItem = item};
}

var item = new SampleItem {Id = 1, StringValue = "Hello"};
dynamic itemClassName = AppendClassName(item);
string json = new JavaScriptSerializer().Serialize(itemClassName);
Debug.WriteLine(json);

编辑 - 这适用于所有类型:

private static string GetJsonWrapper<T>(T item)
{
    string typeName = typeof(T).Name;
    string jsonOriginal = new JavaScriptSerializer().Serialize(item);
    return string.Format("{{\"{0}\":{1}}}", typeName, jsonOriginal);
}