2017-02-27 102 views
1

我有一個JSON列表,其中有一個名稱爲root object的兩個值,並且裏面有一個價格。我必須將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正確。 – PoweredByOrange