2016-04-07 7 views
0

ここにJSONがあります。私はこのJSONから3つの個別の変数に3つのステーションコードを取得しようとしています。逆シリアル化しました。リストを反復して、逆シリアル化されたJSON C#ASP.NETから変数を生成する方法

"stations": [ 
{ 
    "station_code": "HWV", 
    "atcocode": null, 
    "tiploc_code": "HTRWTM5", 
    "name": "Heathrow Airport Terminal 5", 
    "mode": "train", 
    "longitude": -0.490589, 
    "latitude": 51.470051, 
    "distance": 369 
}, 
{ 
    "station_code": "HXX", 
    "atcocode": null, 
    "tiploc_code": "HTRWAPT", 
    "name": "Heathrow Airport Central Terminal Area (T123)", 
    "mode": "train", 
    "longitude": -0.454333, 
    "latitude": 51.471404, 
    "distance": 2309 
}, 
{ 
    "station_code": "HAF", 
    "atcocode": null, 
    "tiploc_code": "HTRWTM4", 
    "name": "Heathrow Airport Terminal 4", 
    "mode": "train", 
    "longitude": -0.445463, 
    "latitude": 51.458266, 
    "distance": 3336 
} 

そして、ここでは、私が最初に局コードのクラスを作った私のC#で、その後、JSONをデシリアライズさと3つの別々の局コード変数を生成するために、それらthorugh反復処理するために駅コードのリストを作ることを試みてきました。

public class Station 
{ 
    public string station_code { get; set; } 
} 

JObject json = JObject.Parse(localJson); 

      IList<JToken> results = json["stations"].Children().ToList(); 

      IList<Station> stationResults = new List<Station>(); 
      foreach (JToken result in results) 
      { 
       Station stationResult = JsonConvert.DeserializeObject<Station>(result.ToString()); 
       stationResults.Add(stationResult); 
       var station1 = stationResults[0]; 
       var station2 = stationResults[0]; 
       var station3 = stationResults[0]; 
      } 

ご協力いただきありがとうございます。

foreach (JToken result in results) 
{ 
    // This gives you the current station object from the JToken 
    Station stationResult = result.ToObject<Station>(); 

    // Add to your Station list 
    stationResults.Add(stationResult); 
} 

これはあなたのstationResultsリストの3 Stationを与える:

+1

あなたの問題は何ですか? – derpirscher

+0

私はJSONから各station_codeに3つの異なる変数を生成しようとしています – kieron

答えて

0
はあなたの foreachに変更

。リストインデックス(例:stationResults[0])を使用してリスト内の各ステーションにアクセスしたり、リストを繰り返したりすることができます。

リストの各項目を1つの変数に割り当てる理由がわかりません。しかし、あなたは本当にこのような何かを行うことができますしたい場合:それは配列型ですので、あなたがIList<Station>に直接localJsonをデシリアライズすることができます

Station station1 = stationResults[0]; 
Station station2 = stationResults[1]; 
Station station3 = stationResults[2]; 
+0

3台の列車駅から駅コードを別のAPIリンクに入れて各列車駅の時刻表を表示します – kieron

+0

station_codeには'stationResults [0] .station_code'などです。結果リストのステーションを個々の変数に割り当てる必要はありません。 – Kurorion

0

。 foreachループでそれぞれを逆シリアル化する必要はありません。

var stations = JsonConvert.DeserializeObject<IList<Station>>(localJson); 
var station1 = stations[0].station_code; 
var station2 = stations[1].station_code; 
var station3 = stations[2].station_code; 
関連する問題