2012-04-16 8 views
1

私は最近、Webサービスクライアントを構築するためにC#を使用しました。 Webサービスのコンポーネントは強力で簡単です(GsoapやAxis IMOよりもはるかに簡単です)、C#を選択しました。C#Webサービス応答配列

私のC#アプリケーションはバックグラウンドで実行され、他のアプリケーション(Webアプリ、PLC、データベースを含む)が保存して使用できるデータを返します。

私の応答は次のようになり:

など
[ 
[ 
    string 
    int 
    [] 
] 
string 
[] 
int 
] 

...

ポイントは、戻り値は単純ではないということです。私の質問は、アプリケーションの他の部分からこのデータを再フォーマットして消費する最良の方法は何ですか?

私の選択肢は以下のとおりです。

  1. XML
  2. JSON

私は両方のルートをチェックアウトしてきたし、このデータをシリアル化するための素晴らしい方法を発見していません。誰もどんな勧告も提供できますか?

最悪のシナリオStringBuilderでXMLを構築するための共通ルーチンを作成する必要があるかもしれませんが、私がまだ知りませんが(私はC#の初心者です) 。

+0

ウェブサービスクライアントは、他のアプリが消費するデータをシリアル化していますか?アプリの残りの部分はインプロセスですか?もしそうなら、なぜそれをシリアル化してデシリアライズするのですか?あなたはオブジェクトモデルのデータを表現し、そのオブジェクトを返すことができますか? – JMD

+0

これはどのようなWebサービスですか? ASMXまたはWCF? –

+0

@JMD私のアプリケーションの残りの部分はC#(PHPとCのミックス)ではないので、C#オブジェクトは機能しません。 –

答えて

2

あなたは確かにJSONを使用できます。

データと自分のOKをシリアル化するJavaScriptSerializerクラスを使用します。http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

var data = new { name = "someValue", id = 1 }; 

var json = new System.Web.Script.Serialization.JavaScriptSerializer(); 

return json.Serialize(data); 

私は(私は今では私のdevのマシンではないんだけど)、このコードをテストしていませんが、私はそれ確信していますあなたのニーズにいくらか調整して動作します。

+0

これは素晴らしいことです。私はこのアプローチを以前に試みたが、Services.Web.Extensionsを動作させるように見えなかった。私はそれを別のショットを与え、この記事を見つけました:http://stackoverflow.com/questions/1987733/system-web-extensions-assembly-cannot-be-resolvedおかげでたくさんの男! –

1

戻り値のDTOクラスを作成して、JSONまたはXMLのシリアル化を使用しないのはなぜですか?それは非常に便利です。

関連する問題