【问题标题】:WCF web service return special JSON responseWCF Web 服务返回特殊的 JSON 响应
【发布时间】:2014-07-25 17:02:59
【问题描述】:

我编写了一个 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;

        }

【问题讨论】:

  • 您确定您提供了正确的代码吗?你说的是两个参数检查这两个参数与mySQL数据库中表中记录的有效性但是你的方法只接受一个参数customerID

标签: c# asp.net json wcf


【解决方案1】:

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

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 以了解如何执行此操作:

例如

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 响应的数据协定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2019-11-18
    相关资源
    最近更新 更多