2017-02-27 12 views
1

私は名前として2つの値root objectの名前があり、そこに価格があるJSONリストを持っています。 root object nameと私の変数marketNameを比較して、そこに価格をつけなければなりません。それをする最善の方法は何ですか?ここでは現時点では私のコードです:ルートオブジェクトの値を比較する

foreach (JToken token2 in tokenJson2["response"]) 
{ 
    var name2 = token2[0]; 

    if(name2 == name) 
    { 
     // Do some fun here 
    } 
} 

JSONデータが(それはあまりにも大きいですので、私は、それをここに投稿することができませんでした)hereから来ているが

+0

linqを使って式を簡略化することができます。そうしないと、foreachループもうまくいきます。 – PoweredByOrange

+0

foreachループをどうすればできますか?私はそれを比較することができるようにリストから項目名をつかむ方法を見つけることができません。 –

+0

'tokenJson2'は' JObject'ですか? – Bassie

答えて

1
あなたがオブジェクトとグラブを反復するためのLINQを使用することができます

var item = tokenJson2["response"] 
      .SingleOrDefault(x => ((JProperty) x).Name == name) as JProperty; 

if (item == null) 
{ 
    throw new InvalidOperationException("Item not found."); 
} 

var price = item.Value["price"].ToObject<decimal>(); 

ここで混乱する部分は、配列ではなくアイテムごとにプロパティを返すということです。残念ながら、あなたはそれ以上のコントロールを持っていません:)

+0

あなたは 'ToArray()'が必要ではないと思いますか? – Bassie

+0

ありがとうございました。しかし、それは私のようにすべての値を取得していない/最初の項目だけの名前ですか? –

+0

@Bassie correct。 – PoweredByOrange

関連する問題