2014-09-20 85 views
0

我正在创建一个webservice来与JSON API进行交互。将根元素添加到C#中的json序列化中#

这个API需要我在字符串中设置一个根元素,但我不能让这个发生。

在这一切发生的地方 - 现在只是做只是告诉我的JSON输出:

public static string CreateServiceChange(ServiceChange change) 
     { 
      string json = JsonConvert.SerializeObject(change); 

      return json; 
     } 

这是业务改变类:

public class ServiceChange 
{ 
    [JsonProperty("email")] 
    public string requesterEmail { get; set; } 

    [JsonProperty("description_html")] 
    public string descriptionHtml { get; set; } 

    [JsonProperty("subject")] 
    public string subject { get; set; } 

    [JsonProperty("change_type")] 
    public int changeType { get; set; } 
} 

而且方法结合这两个在一起:

public string copyTicketToChange(int ticketId) 
    { 
     HelpdeskTicket.TicketResponseActual ticket = getHelpdeskTicket(ticketId); 
     ServiceChange change = new ServiceChange(); 
     change.descriptionHtml = ticket.Response.DescriptionHtml; 
     change.requesterEmail = ticket.Response.Email; 
     change.subject = ticket.Response.Subject; 
     change.changeType = 1; 
     string Response = Dal.CreateServiceChange(change); 
     return Response; 
    } 

json的输出结果如下:

{"email":"[email protected]","description_html":"This is a test","subject":"Testing","change_type":1} 

和预期输出:

{ "itil_change": {"email":"[email protected]","description_html":"This is a test","subject":"Testing","change_type":1}} 

我怎样才能做到这一点?

回答

1

包装你的服务改变到另一个对象,并对其进行序列化:

public class ServiceChangeWrapper 
    { 
    public ServiceChange itil_change { get; set; } 
    } 

...

public static string CreateServiceChange(ServiceChange change) 
    { 
     ServiceChangeWrapper wrapper = new ServiceChangeWrapper { itil_change = change}; 
     string json = JsonConvert.SerializeObject(wrapper); 

     return json; 
    } 
+0

运行完美!简单! – 2014-09-20 17:30:52