2016-06-25 15 views
0

APIにクエリを実行した後にjsonレスポンスが返されます。C#でJSONレスポンスを解析する

JSONのようなものです:

{ 
    "results": [ 
     { 
     "alternatives": [ 
      { 
       "confidence": 0.965, 
       "transcript": "how do I raise the self esteem of a child in his academic achievement at the same time " 
      } 
     ], 
     "final": true 
     }, 
     { 
     "alternatives": [ 
      { 
       "confidence": 0.919, 
       "transcript": "it's not me out of ten years of pseudo teaching and helped me realize " 
      } 
     ], 
     "final": true 
     }, 
     { 
     "alternatives": [ 
      { 
       "confidence": 0.687, 
       "transcript": "is so powerful that it can turn bad morals the good you can turn awful practice and the powerful once they can teams men and transform them into angel " 
      } 
     ], 
     "final": true 
     }, 
     { 
     "alternatives": [ 
      { 
       "confidence": 0.278, 
       "transcript": "you know if not on purpose Arteaga Williams who got in my mother " 
      } 
     ], 
     "final": true 
     }, 
     { 
     "alternatives": [ 
      { 
       "confidence": 0.621, 
       "transcript": "for what pink you very much " 
      } 
     ], 
     "final": true 
     } 
    ], 
    "result_index": 0 
} 

私は(私は*文字列としてそれを維持)上記のJSONの結果に2つのことを実行する必要があります。

  1. トランスクリプト部分(複数可)のを取得します。 jsonの応答。
  2. これらの文字列を処理します。

    • これは初めてのことです。文字列に変換することは、シリアライゼーションと呼ばれます。デシリアライゼーションはなぜここで助けになるのですか?

文字列に変換する:

var reader = new StreamReader(response.GetResponseStream()); 


      responseFromServer = reader.ReadToEnd(); 

はどのようにこれを達成するために:私は使用してそれをやりましたか?

+0

デシリアライズの必要はありませんが、それはあなたの人生を楽にします:o) –

+0

JSONを逆シリアル化して.NETオブジェクトに変換し直します。その後、文字列の解析を行うのではなく、そのオブジェクトのプロパティにアクセスすることができます。デシリアライズを支援するために、Newtonsoft JSON.NETのようなライブラリを使用してください。 – wablab

答えて

1

これを逆シリアル化する必要があります。それはそれを扱う最も簡単な方法です。 Json.NETdynamic使用して、それは次のようになります。

dynamic jsonObj = JsonConvert.DeserializeObject(responseFromServer); 
foreach (var result in jsonObj.results) { 
    foreach (var alternative in result.alternatives) { 
     Console.WriteLine(alternative.transcript); 
    } 
} 

しかし、あなたは代わりにそれのために明示的なクラスを作りたいかもしれません。次に、あなたはできます:

他の.NETオブジェクトと同様に対処してください。

+2

クリップボード内のJSONを使用すると、メニューが提供されます。Edit/Paste Special/JSONをクラスとして貼り付けます。 –

3

JSONを具体的なクラスに解析し、以降の作業を行うことができます。

これを行うには、json2csharpのようなサービスを使用して、提供したJSONに基づいてクラスを生成することができます。あなたはその後、具体的なクラスのインスタンスに文字列化JSONを解析するJSON.NETを使用することができます

enter image description here

public class Alternative 
{ 
    public double confidence { get; set; } 
    public string transcript { get; set; } 
} 

public class Result 
{ 
    public List<Alternative> alternatives { get; set; } 
    public bool final { get; set; } 
} 

public class RootObject 
{ 
    public List<Result> results { get; set; } 
    public int result_index { get; set; } 
} 

var root = JsonConvert.DeserializeObject<RootObject>(responseFromServer); 
代わりに、組み込み機能 貼り付けJSONクラスとしてのVisual Studioを使用することができます
関連する問題