WCF Web服务返回特殊的JSON响应

时间:2014-07-25 17:03:00

标签: c# asp.net json wcf

我编写了一个iOS应用程序,它通过URL使用Post HTTP方法,并使用两个参数检查两个参数对mySQL数据库中表中记录的有效性,并返回JSON响应。

如果参数有效,则响应为{"success":1},否则响应为{"success":0,"error_message":"The parameters are invalid."}。执行此操作的Web服务是在PHP中完成的。一切正常。

但是,现在我想对使用WCF Web服务的MSSQL数据库做同样的事情。我做了一些研究,实际上我正在使用它,我在Web服务中使用存储过程,响应以JSON格式返回。

我是WCF Web服务和C#.NET的新手,我试图弄清楚如何让响应不返回存储过程的结果,而只是一个JSON响应,指示是否有结果和另一个响应,如果有没有结果。我的测试WCF Web服务(Service1.svc.cs)的代码如下所示,这将带回JSON中的所有数据,但我想要的只是结果中有数据然后用{"success":1}响应,如果结果中没有数据,然后回复{"success":0,"error_message":"The parameters are invalid."}。我不包括 IService1.cs web.config CustomerOrdersOrders.cs 代码,因为我不确定他们是否需要解决我的问题。如果是,请告诉我,我会发布它们。

感谢任何帮助。

public List<CustomerOrdersOrders> GetCustomerOrdersOrders(string customerID)
        {
            NorthwindDataContext dc = new NorthwindDataContext();
            List<CustomerOrdersOrders> results = new List<CustomerOrdersOrders>();
            System.Globalization.CultureInfo ci =     System.Globalization.CultureInfo.GetCultureInfo("en-US");

            foreach (CustOrdersOrdersResult oneOrder in dc.CustOrdersOrders(customerID))
            {
                results.Add(new CustomerOrdersOrders()
                {
                    OrderID = oneOrder.OrderID,
                    OrderDate = (oneOrder.OrderDate == null) ? "" :   oneOrder.OrderDate.Value.ToString("d", ci),
                    RequiredDate = (oneOrder.RequiredDate == null) ? "" :   oneOrder.RequiredDate.Value.ToString("d", ci),
                    ShippedDate = (oneOrder.ShippedDate == null) ? "" :   oneOrder.ShippedDate.Value.ToString("d", ci)

                });
            }

              return results;

        }

1 个答案:

答案 0 :(得分:1)

如果您只想测试数据的存在,您有两个选择:创建一个存储过程,它接受一个customerid并返回一个布尔值,如果数据存在。 或者,使用这样的非存储过程方法:

public bool DataExists(string customerId)
{
 using (var dc = new NorthwindDataContext())
 {
  return dc.CustomerOrders.Any(co => co.CustomerID == customerId);
  // or use the boolean stored procedure
 }
}

一旦你有了上面的布尔方法,你就可以让你的web方法(WCF中的操作契约)返回正确的JSON。

您可以使用JSON响应查找WCF,了解如何:

e.g。

http://www.wcftutorial.net/How_To_JSON_Using_WCF.aspx How do I return clean JSON from a WCF Service?

大多数情况下,您需要将操作合同归属于:

[WebGet(ResponseFormat = WebMessageFormat.Json)]

并返回一个数据合同,该合同将映射到您需要的JSON响应。