使用WCF生成JSON数组

我正在开发一个返回此的WCF Web服务:

{ "allFormsResult": [ { "FormId": 1, "FormName": "Formulario 1" }, { "FormId": 2, "FormName": "Formulario 2" }, { "FormId": 3, "FormName": "Formulario 3" } ] } 

这是代码:

 public class RestServiceImpl : IRestServiceImpl { public List allForms() { List list = null; using (var vAdmEntities = new ADMDatabase.ADMEntities()) { list = new List(); foreach (var form in vAdmEntities.Form) { FormContract formC = new FormContract { FormName = form.name.Trim(), FormId = form.formId }; list.Add(formC); } } return list; } } 

如何以这种方式生成它?

 [ { "FormId": 1, "FormName": "Formulario 1" }, { "FormId": 2, "FormName": "Formulario 2" }, { "FormId": 3, "FormName": "Formulario 3" } ] 

问题出在这里:

 namespace ADM { [ServiceContract] public interface IRestServiceImpl { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "forms/")] List allForms(); } } 

我必须这样使用它:

 namespace ADM { [ServiceContract] public interface IRestServiceImpl { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "forms/")] List allForms(); } } 

改变BodyStyle

 BodyStyle = WebMessageBodyStyle.Bare 

也可以通过Web.Config将此行为设置为默认值,而无需将属性直接添加到合同中。