2017-02-28 54 views
0

我有一段代碼,它應該從JSON中獲取項目名稱,然後將其與價目表進行比較。如果名稱存在,那麼它會查找價格並將其添加到列表視圖中。這個問題是,如果我試圖在那裏添加一個foreach循環,那麼它會拋出一個錯誤。這裏是我的代碼:從列表中獲取每個項目並將其與另一個項目進行比較

JObject tokenJson2 = JObject.Parse(json2); 
foreach (var data2 in tokenJson2["response"]) 
{ 
    var item = data2.ToArray() 
        .SingleOrDefault(x => ((JProperty)x).Name == name.ToString()) as JProperty; 

    if (item != null) 
    { 
    //DoSomething 
    } 
} 

這是我得到的錯誤:

Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'Newtonsoft.Json.Linq.JProperty'.

這裏是tokenJson2數據:Link

+3

也許你可以添加一個例子JSON字符串。 –

+0

你可以給我一個建議,在哪裏上傳它? –

+0

json2的內容就夠了。如果它太大/太長,一個例子就足夠了,你可以在問題下發帖。 –

回答

0

根據您的(一種不尋常的)JSON結構, 「響應」 是JProperty與值爲JObject,其中包含多個JProperty元素,名稱爲JProperty.Name,值爲JObject,具有「價格」和「數量」屬性。

它可以重複這樣:

var response = (JObject)tokenJson2.Property("response").Value; 
foreach (var item in response.Properties()) 
{ 
    var name = item.Name; 
    var data = (JObject)item.Value; 
}; 
0

如果你的JSON是這種風格

{"NameCol"="N1", "response" : [{"price":"22"}, {"price":24}, ..... {....}] 

我正在使用Newtonsoft庫來達到這個目的。每data2環路將包含單個對象一樣{"price":"22"}

foreach (var data2 in (Newtonsoft.Json.Linq.JArray)tokenJson2["response"]) 
{ 
     string name = ""; 
     if(tokenJson2.TryParseValue("NameCol", name)) 
     { 
     string NameFromJSON =""; 
     //This line will convert {"price":"22"} to dictionary 
     Dictionary<string, object> data2_dict = 
      JsonConvert.DeserializeObject<Dictionary<string, object>>(data2.ToString()); 
     if(data2_dict["name"] == name) 
     { 
      //DO SOME THING HERE 
     } 
     }   
} 
+0

對我來說它說它有轉換詞典的問題 –

+0

你可以將它轉換爲具有匹配屬性的相關對象。 – Lali

+0

對不起,但我不確定你的意思?雖然這是完整的錯誤:錯誤轉換值「AK-47 |海藍寶石復仇(戰鬥傷痕)」鍵入'System.Collections.Generic.Dictionary'2 [System.String,System.Object]'。路徑'',第1行,位置45. –

0

u可以使用SelectTokens ..

 JToken[] tokens = tokenJson2.SelectTokens(string.Format("response.{0}", name)).ToArray(); 
     Array.ForEach<JToken>(tokens, (token) => { 
      //DoSomething 
     }); 
+0

嘿嗯,我不能讓你的代碼工作?以下是錯誤:其他信息:解析路徑時出現意外的字符: –

+0

我無法打開您的json鏈接。你可以放在這裏嗎? – levent

+0

https://api.opskins.com/IPricing/GetAllLowestListPrices/v1/?appid=730 –

相關問題