-2

XML応答からJSONデータを取得したい。実際にWebサービスが応答を返すのは次のとおりです。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[
    {
        "id": 1,
        "name": "paresh",
    },
    {
        "id": 2,
        "name": "jacob",
    },
    {
        "id": 3,
        "name": "color",
    },
    {
        "id": 4,
        "name": "Adil color",
    }
]</string>

私はすでにいくつかの記事を参照しました。そして、応答がXMLのみの場合、次のように実装できます。

   MyListBox.ItemsSource = from tweet in xmlTweets.Descendants("student")
                                          select new StudentItem
                                          {
                                              ID = tweet.Element("id").Value,
                                              Name = tweet.Element("name").Value,
                                          };

しかし、ここでの私の問題は、内部にあるJSONを取得し、ListBoxに表示することです。

4

3 に答える 3

1

ScriptMethod属性でwebmethodを装飾することにより、webメソッドの応答形式を定義できます。コードはこんな感じです。

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

json形式の文字列でコードを取得したら、jsonで解析できます。

混乱があれば教えてください。

アップデート:

したがって、部分文字列メソッド<string>からタグを手動で削除する必要があります。これがあなたのコードです。

string Header = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">";
        string str = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">[{\"id\": 1,\"name\": \"paresh\"}]</string>";
        string TempStr = str.Remove(0, Header.Length);
        string FinalStr = TempStr.Substring(0, TempStr.Length - 9);

FinalStrはjson文字列です。

于 2012-12-12T13:40:34.600 に答える
0

これを使用してxmlをjsonに変換するには、Scalaで記述されたTwitterのfinagleを使用することをお勧めします。

 val xmlResponse = <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
     [
         {
            "id": 1,
            "name": "paresh",
          },
          {
             "id": 2,
             "name": "jacob",
           },
           {
              "id": 3,
              "name": "color",
           },
          {
                "id": 4,
                "name": "james bond",
           }
     ]</string>

  val properties = (xmlResponse \\ "string")    //parse the xml

  val responseContent = xmlResponse.toSeq.toJson.toString()

そしてあなたはによってチェックすることができます:

  println(responseContent)

finagleを選択する前に、scalaで簡単な例を試してみてください。その後、finagleライブラリを調べてみてください。これは、多数のサーバー(email、asp.net、SQL、smsなど)からのさまざまな種類の応答を操作するのに役立ちます。

于 2012-12-12T11:04:06.387 に答える
0

あなたが投稿した最初の XML を使用してから、 JSON.Netなどのライブラリを使用して XML を操作し、JSON を抽出してオブジェクトに格納してから、ListBox にバインドします。

JSON.Net に関するいくつかの重要なポイントを次に示します (Web サイトから取得)。

  • .NET オブジェクトと JSON の間で変換するための柔軟な JSON シリアライザー
  • JSON を手動で読み書きするための LINQ to JSON
  • 高性能、.NET の組み込み JSON シリアライザーより高速
  • インデントされた読みやすい JSON を記述します
  • JSON を XML との間で変換する
  • .NET 2、.NET 3.5、.NET 4、Silverlight、Windows Phone をサポート
于 2012-12-12T11:04:53.907 に答える