Diskuze: Jak získat seznam ID z JSON
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nejjednodušší řešení je asi tohle:
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(json);
var offer = obj["response"]["data"]["431"];
Jestli si chceš více pohrát, tak vezmi ten json do paměti (ctrl+c) a ve VS to vlož jako json (ctrl+q a hledej "paste json"). To ti vygeneruje ale trošku bordel, nejlepší by bylo si dát ty data jako slovník, ale to by sis (asi) musel napsal nějaký converter.
Slo by to snad i takto:
JObject obj =
Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(json);
var structure = obj.SelectToken("response.data").Values().ToList();
List<string> ids = new List<string>(0);
structure.ForEach(w =>
ids.Add(w.SelectToken("Offer.id").ToString()));
Vysledok je v ids. Kazdopadne, to len v pripade, ze si si isty, ze struktura jsonu sa ti nezmeni. Da sa s tym vyhrat.
mala prasarnicka
ale pokud neresis bezpecnost a format jsonu bude vzdy tak, jak uvadis, facha spolehlive
Regex pattern = new Regex("\"([0-9]+)\" *: *{");
MatchCollection matches = pattern.Matches(jsonString);
UInt32[] id = new UInt32[matches.Count];
for(int i=0;i<matches.Count;i++)
{
id[i] = UInt32.Parse(matches[i].Groups[1].Value);
}
takto dostanes ty idcka jako cisla .. pokud staci stringy, neni treba ani to UInt32Parse samozrejme
No a nebo si vytvor DTO, ktera koresponduji s JSONem a pomoci
Newtonsoft.Json.JsonConvert.DeserializeObject<DTO>(json);
si to narves do sveho citelneho objektu, ze ktereho to potom v pohode vytahnes pomoci LINQu.
Zobrazeno 6 zpráv z 6.