使用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将此行为设置为默认值,而无需将属性直接添加到合同中。