0

我想构建一个服务,将从数据库读取的数据以 JSON 格式传递给客户端。我不知道模式表和类型。

我考虑过在 Dictionary 上实现 WCF,但 JSON 非常复杂,包含像“key = ...; value = ...”这样的对象,我只想要“key=value”,我需要返回 Dictionary 对象的列表。有时从数据库我会收到一个逗号分隔的数组,所以我会在我的字典中插入一个带有新字典作为值的键。

在 PHP 中,我的老板说可以通过关联数组来完成。请帮助我一些想法或链接,因为我不知道从哪里开始寻找。

如果有不明白的地方请评论,我会尝试另一种解释。

编辑:

  1. 我需要它作为休息服务,所以 JSON 是强制性的。
  2. 如何从表中加载数据?我可以使用什么类型的?

编辑#2:这就是我想要得到的:CorecJSON

编辑#3:这是我当前的 json :

stdClass Object
(
    [areaGetStreetTypesResult] => stdClass Object
        (
            [responseMessage] => [{"name":"IMPASSE","street_type":"IMP"}{"name":"LOTISSEMENT","street_type":"LOT"}{"name":"ROUTE","street_type":"RTE"}{"name":"RUE","street_type":"RUE"}]
            [response_status] => stdClass Object
                (
                    [message] => Success : JSON created into the responseMessage variable !
                    [status] => 0
                )

        )

)

之间不包含一些逗号,因此无法被 php 解码。我该怎么办 ?

这是我的方法代码

4

3 回答 3

2

我认为在 webservice API 中将所有内容都作为字典来做是不好的做法,我讨厌需要像这样使用 API。如果它是 WCF,它会生成 WSDL,而 WDSL 描述数据的进出,所以如果一切都是字典,WSDL 无法提供任何有意义的东西,因此您的数据合同不会告诉您有关数据的任何信息。
如果您只需要通过 Web 服务转发数据库数据,WCF 有 DataServices http://msdn.microsoft.com/en-us/data/bb931106虽然我认为您应该创建适合您业务需求的 API,而不是数据库和数据库之间的简单代理你的客户。

于 2012-05-11T09:06:02.087 回答
1

需要传递 JSON 的原因是什么?如果要创建 WCF REST 服务,只需告诉 WCF 创建 JSON 消息,如下所述:http: //www.codeproject.com/Articles/327420/WCF-REST-Service-with-JSON

如果您从 C# 应用程序访问该服务,则无需关心数据是如何来回传递的。只需采用“普通”方法参数并使用您在本地执行的返回值即可。

例子:

string[] GetResultStrings(List<Rectangle> sourceRectangles);

如果您确实需要传递 JSON 字符串,只需传递字符串并使用 JSON 序列化器和反序列化器对回复进行编码和对参数进行解码。

例如:

string GetJSONString(string jsonRequest);

以下信息可能有助于使用 JSON 序列化器和反序列化器:http: //www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET

编辑
我正在使用以下方法将可序列化对象序列化为 JSON:

public static string SerializeJSON(this object obj)
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
    using (MemoryStream ms = new MemoryStream())
    {
        serializer.WriteObject(ms, obj);
        return Encoding.UTF8.GetString(ms.ToArray());
    }
}

这适用于任何DataContract类,如:

[DataContract]
public class MyJSONReturnableClass
{
    [DataMember]
    public string ThisBecomesANamedString;

    [DataMember]
    public MyJSONReturnableClass[] AndWorksAlsoForNestedArrays;
}
于 2012-05-11T08:39:59.630 回答
1

填充您的字典,然后使用 JSON 对其进行序列化。使用 WCF 或 RabbitMq 将其传递给您的客户端...

JsonConvert.SerializeObject(yourDict);

下载 NewtonSoft.dll

使用:

using Newtonsoft.Json;
于 2012-05-11T08:43:32.193 回答