2017-02-27 80 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