Diskuze: Json Deserializace ze stringu?
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Ahoj, je to opravdu jednoduché, vytvoříš si třídu, která přesně opisuje strukturu tvého JSON objektu a potom jen zavoláš jednu metodu, kde zadáš tu tvou třídu.
Napíšu ti příklad
...
Takže například pro JSON:
{
"boolean": true,
"number": 123,
"object": {
"a": "b",
"c": "d",
"e": "f"
},
"string": "Hello World"
}
//
class Program
{
static void Main(string[] args)
{
var json = @"{""boolean"":true,""number"":123,""obj"":{ ""a"":""b"",""c"":""d"",""e"":""f""},""str"":""Hello World""}";
Deserialized d_json = JsonConvert.DeserializeObject<Deserialized>(json);
// d_json objekt nyní obsahuje data naplněná z json stringu
}
}
class Deserialized
{
public bool boolean;
public int number;
public Dictionary<string, string> obj;
public string str;
}
S čím ti ale bohužel nepomůžu tak je název s mezerou v životě by mě nenapadlo při tvoření JSONu, tak nějaký objekt pojmenovat, právě z tohodle důvodu, že to pro někoho akorát bude drbačka jak na to.
Ahoj, hned to skusim. Velice děkuji a mimochodem,jak jsem tak vycetl na netu, tak takhhle se zase dela nazev s mezerou
[JsonProperty("1. symbol")]
public string symbol {get; set}
Skus pouzit JsonPropertyAttribute nad danou property.
Jo tak to vypadá easy, snad to bude fungovat i na deserializaci ale 
Deserialized d_json = JsonConvert.DeserializeObject<Deserialized>(getDataFromWeb.Json);
Console.WriteLine(d_json.StockQuotes["2. price"]);
Console.ReadKey();
}
}
public class Deserialized
{
[JsonProperty("Meta Data")]
public Dictionary<string, string> MetaData;
[JsonProperty("Stock Quotes")]
public Dictionary<string, string> StockQuotes;
}
Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the
current JSON array (e.g. [1,2,3]) into type
'System.Collections.Generic.Dictionary`2[System.String,System.String]'
because the type requires a JSON object (e.g. {"name":"value"}) to deserialize
correctly.
Zrovna super to nefunguje
.
Co psala Elisse slo super
Máš špatně datové typy.
"Stock Quotes" není string, string dictionary, ale je to pole
Podívej pořádně na ten
JSON.
Dokonce ti to i píše, že to nemůže deserializovat pole na dictionary:
Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Collections.Generic.Dictionary
A jaký bude kód, pokud nevíme, jaký název očekávat? Nelze tedy podle toho vytvořit třídu, která kopíruje ten json. Právě takový problém řeším, tak by mi to pomohlo. Díky
Použij typ dynamic... Práce s ním je potom v lecčem podobná Dictionary.
Zobrazeno 10 zpráv z 10.