0

データベースから読み取ったデータを JSON 形式でクライアントに渡すサービスを構築したいと考えています。スキーマ テーブルと型がわかりません。

ディクショナリで WCF を実装することを考えましたが、JSON は非常に複雑で、「キー = ...; 値 = ...」のようなオブジェクトが含まれており、「キー = 値」だけが必要で、ディクショナリ オブジェクトのリストを返す必要があります。データベースからカンマ区切りの配列を受け取る場合があるため、値として新しい辞書を持つキーを辞書に挿入します。

PHP では、連想配列を使用して実行できると上司が言いました。どこから見ればいいのかわからないので、アイデアやリンクを教えてください。

わからないところがありましたらコメントいただければ、別の説明を試みます。

編集:

  1. 残りのサービスにする必要があるため、JSON は必須です。
  2. テーブルからデータをロードするにはどうすればよいですか? どのタイプを使用できますか?

編集#2:これは私が取得したいものです:CorectJSON

編集#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

Web サービス 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

EDIT
次のメソッドを使用して、シリアライズ可能なオブジェクトを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 に答える