2017-01-04 9 views
0

Yahoo Financeから市場データをストリーム配信しようとしています。 jsonストリームをデシリアライズしてコンソールに書き込むのに問題があります。JSON文字列をオブジェクトリストにデシリアライズし、値コンソールに書き込む

私はいくつかのスタックオーバーフローの質問を一緒に何かをしようとしてきました。

コンソールに結果を書き込む際に問題があるため、適切なコードをまとめることができないのかどうかは分かりません。

ヤフーからの私のJSONデータは次のようになります。

{ 
    "ResultSet":{ 
     "Query":"genmab", 
     "Result":[ 
     { 
      "symbol":"GNMSF", 
      "name":"Genmab A/S", 
      "exch":"PNK", 
      "type":"S", 
      "exchDisp":"OTC Markets", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GE9.F", 
      "name":"Genmab A/S", 
      "exch":"FRA", 
      "type":"S", 
      "exchDisp":"Frankfurt", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GEN.F", 
      "name":"GENMAB AS DK 1", 
      "exch":"FRA", 
      "type":"S", 
      "exchDisp":"Frankfurt", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GE9.BE", 
      "name":"GENMAB AS DK 1", 
      "exch":"BER", 
      "type":"S", 
      "exchDisp":"Berlin", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GE9.SG", 
      "name":"GENMAB AS Navne Aktier DK 1", 
      "exch":"STU", 
      "type":"S", 
      "exchDisp":"Stuttgart", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GEN.CO", 
      "name":"Genmab A/S", 
      "exch":"CPH", 
      "type":"S", 
      "exchDisp":"Copenhagen", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GEN.SG", 
      "name":"GENMAB AS Navne Aktier DK 1", 
      "exch":"STU", 
      "type":"S", 
      "exchDisp":"Stuttgart", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GMXAY", 
      "name":"Genmab A/S", 
      "exch":"PNK", 
      "type":"S", 
      "exchDisp":"OTC Markets", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"GE9.DU", 
      "name":"GENMAB AS DK 1", 
      "exch":"DUS", 
      "type":"S", 
      "exchDisp":"Dusseldorf Stock Exchange", 
      "typeDisp":"Equity" 
     }, 
     { 
      "symbol":"0MGB.IL", 
      "name":"GENMAB A/S GENMAB ORD SHS", 
      "exch":"IOB", 
      "type":"S", 
      "exchDisp":"International Orderbook - London", 
      "typeDisp":"Equity" 
     } 
     ] 
    } 
} 

私はtogeter置かれているコードは、データojectsのリストを作成する必要があります。

using System.Web.Script.Serialization; 

public class DataObject 
{ 
    public string symbol { get; set; } 
    public string name { get; set; } 
    public string exch { get; set; } 
    public string type { get; set; } 
    public string exchDisp { get; set; } 
    public string typeDisp { get; set; } 

} 

public class RootObject 
{ 
    public DataObject[] resultSet { get; set; } 
} 

using (WebClient web = new WebClient()) 
     { 
      string _url = "http://d.yimg.com/aq/autoc?query=genmab&region=CO&lang=en-US"; 

      var search = web.DownloadString(_url); 

      JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      List<RootObject> oRootObject = serializer.Deserialize<List<RootObject>>(search); 

そして、私がしたいと、その後いただきたいです別のデータをコンソールに書き込む

foreach (var item in oRootObject) 
      { 
       Console.WriteLine(oRootObject.???.Value.name); 
      } 

私はフローをデバッグしようとしましたが、私はどんなデータも見ませんオブジェクトリストに追加します。あなたのJSONをフォーマットした後、私はあなたのクラスはかなりあなたのJSON

にマッピングしていないことを

おかげ フレミング

答えて

4

を見ることができる私は本当に便利なツールを使用 - あなたのJSONにマップするクラスを作成するhttp://json2csharp.comを:

public class Result 
{ 
    public string symbol { get; set; } 
    public string name { get; set; } 
    public string exch { get; set; } 
    public string type { get; set; } 
    public string exchDisp { get; set; } 
    public string typeDisp { get; set; } 
} 

public class ResultSet 
{ 
    public string Query { get; set; } 
    public List<Result> Result { get; set; } 
} 

public class RootObject 
{ 
    public ResultSet ResultSet { get; set; } 
} 

あなたが前に行ったようにあなたは、その後、行うことができます。

RootObject oRootObject = serializer.Deserialize<RootObject>(search); 
インサイド0

は、他の目的である - ResultSet内部ResultSet
Resultリストである - ので、それはあなたが反復したいものです。
あなたはこのような何かをする必要があります:

foreach (var item in oRootObject.ResultSet.Result) 
{ 
    Console.WriteLine(item.name); 
} 
+1

あなたは私を打つ!特定の問題は、クエリを含む代わりにOP配列のResultSetを配列として返し、結果配列 –

+0

はjsonを正しくフォーマットしたときにのみこれを見たということでした。 json2csharp.comも大いに役立ちます! – Alex

+0

ありがとうございました。 しかし、どうすれば別の{get;セット; }をコンソールに追加します。 私はforeachを使うことを考えましたが、コードを正しく取得できないようです。 –

関連する問題