C# httpwebresponse json érték feldolgozása WMP 5 alatt

C# httpwebresponse json érték feldolgozása WMP 5 alatt
2013-06-21T10:39:50+02:00
2013-06-25T12:00:32+02:00
2022-11-29T07:05:49+01:00
Ubul1986
Üdv. Írok egy WMP 5-ös appot MC35-ös készülékre, amiben vannak httpwebrequest kérések, ami egy szerveren belüli php file-hoz megy át, feldolgozódik, és print-tel visszaíratok egy eredményt

pl:


string user_is_exists = ""; string url = "http://localhost/getZones.php"; System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "application/json; charset=utf-8"; request.Accept = "application/json"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using(StreamReader sr=new StreamReader(response.GetResponseStream())){ user_is_exists = sr.ReadToEnd(); }

az user_is_exists csak egy hülye változónév, lényegtelen hogy mi a neve perpill, a lényeg, hogy php részen egy print json_encode($array)-t küldök vissza, ami { "1":"valami","2":"valami2"} formátumban adja vissza az eredményt...ez az user_is_exists-ben benne is van stringként, MessageBox.Show()-al szoktam kiíratni,látom is az eredményt.

Első kérdésem az lenne, hogy ha JSON-t küldök vissza, hogy tudnám pl egy Dictionary<string,string> -ben eltárolni a kapott eredményeket? Vagy egyáltalán mit küldjek vissza php szinten ,ha több adatot küldök vissza? (pl egy combobox feltöltése miatt most, index+név párost)

Próbálkoztam a JSON.NET-tel, kevés sikerrel, a dll-t betettem a referencesek közé, de nem tudom hogy kéne deserialize-álni.

Ha valaki tud adni egy épkézláb ötletet, hogy hogy tudnám a kapott értéket feldolgozni, ha olyan formátumban küldöm át, amiben, megköszönném. (nem feltétlen kötelező a JSON, max átküldöm "[ "kulcs" => "érték" , "kulcs2" => "érték2" ] " párosban, ha tudom. Gondolom csak stringet tudok visszaküldeni, array-t nem (vagy pl print_r($array) -al igen? akkor is string lesz végül az érték)

Várom tanácsaitokat, ötleteiteket.
Mutasd a teljes hozzászólást!
Összedobtam neked egy példát, ami a DeserializeObject() metódust használja:

Itt a class:

public class ComboboxValues { public int Key { get; set; } public string Value { get; set; } }

Itt a deserialize:

string json = @"{ ""Key"": ""1"", ""Value"": ""Első beállítás"" }"; ComboboxValues values = JsonConvert.DeserializeObject<ComboboxValues>(json);

Lehet választani, melyik szimpatikusabb.
Mutasd a teljes hozzászólást!

  • Én tudok.

    Olvasd el a doksit!
    Mutasd a teljes hozzászólást!
  • Köszi, ezzel kezdtem alapból, még a kérdés kiírása előtt.
    Pl nálam már itt gond van:

    Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);

    a json-ba beleköt, plusz a DeserializeObject<Product> részébe is, hogy rossz az argumentum. (pedig konkrétan ezt próbáltam így ki)

    most azt tettem, hogy php-n belül a query-t ha megkaptam,
    mysql_fetch_assoc-al végigmentem az eredményen while cikluson belül, és ott printelem az eredményt egy value1 : value2 párosként, végére meg PHP.EOL-t tettem...így most egyenként visszakapom az eredményt, már csak bekéne tennem egy dictionary-be, kettőspont között elvágva az eredményt. Csúnya megoldás, de ha jobb nincs, most használom ezt, aztán kínlódok egy sort még a JSON.NET-es megoldással
    Mutasd a teljes hozzászólást!
  • Ott van alatta a Linq-es példa:

    string json = @"{ ""Name"": ""Apple"", ""Expiry"": "2008-12-28T00:00:00", ""Price"": 3.99, ""Sizes"": [ ""Small"", ""Medium"", ""Large"" ] }"; JObject o = JObject.Parse(json); string name = (string)o["Name"]; // Apple JArray sizes = (JArray)o["Sizes"]; string smallest = (string)sizes[0]; // Small

    Nézd meg, hogy a Parse() metódus hívása után mi van az objektumban!

    A DeserializeObject() metódus egy konkrét class-ba helyezi az eredményt. Valószínűleg valamit elrontasz a class deklarációjakor, azért kapod a hibát.

    A Parse() dinamikus objektumba rakja az eredményt (JObject), annak minden előnyével és hátrányával.
    Mutasd a teljes hozzászólást!
  • Összedobtam neked egy példát, ami a DeserializeObject() metódust használja:

    Itt a class:

    public class ComboboxValues { public int Key { get; set; } public string Value { get; set; } }

    Itt a deserialize:

    string json = @"{ ""Key"": ""1"", ""Value"": ""Első beállítás"" }"; ComboboxValues values = JsonConvert.DeserializeObject<ComboboxValues>(json);

    Lehet választani, melyik szimpatikusabb.
    Mutasd a teljes hozzászólást!
  • köszönöm :)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd