Serializálás - összeomlási tanfolyam Megpróbálom deserializálni egy Facebook-barát Graph API hívását egy objektumlistára. A JSON objektum a következőképpen néz ki: {'data':[{'id':'518523721', 'name':'ftyft'}, {'id':'527032438', 'name':'ftyftyf'}, {'id':'527572047', 'name':'ftgft'}, {'id':'531141884', 'name':'ftftft'}, {'id':'532652067', 'name'... List facebooks = new JavaScriptSerializer(). Deserialize >(result); Nem működik, mert a primitív objektum érvénytelen. Hogyan tudom ezt deserializálni?
Deserialize (result); Osztályaim neve csak egy példa. Helyneveket kell használnia. Mintateszt hozzáadása: string json = @'{''data'':[{''id'':''518523721'', ''name'':''ftyft''}, {''id'':''527032438'', ''name'':''ftyftyf''}, {''id'':''527572047'', ''name'':''ftgft''}, {''id'':''531141884'', ''name'':''ftftft''}]}'; Friends facebookFriends = new (). Deserialize (json); foreach(var item in) { Console. WriteLine('id: {0}, name: {1}',, );} Termel: id: 518523721, name: ftyft id: 527032438, name: ftyftyf id: 527572047, name: ftgft id: 531141884, name: ftftft 3 Igen, amit nem akarok megtenni, hozzon létre egy új tárgyat, amely megtartja a gyermekeket. Azt hiszem, nem fogom aláírni a Json-t, kivéve a primitív tárgyat. Köszönöm. @Kevin Holditch köszönöm a javítást. Hiányzott egy fontos darab:) 2 Ami nem tetszik ebben a () -ben, az az, hogy mindig egy meghatározott T-típusra van szükség. A Java-ban található ez az könyvtár (csomag), amely minden névtelen marad: "JSONObject [ "param"]. JSONarray (5) "stb 2 Fontos megjegyezni, hogy az azonosító és a név tulajdonságainak beállítóit nyilvánosan kell hagyni.
Egyetértek Ikarussal (kommenteltem volna, ha lehet), de ahelyett, hogy használnám az CustomObject osztályban használnám a Szótár (arra az esetre, ha a Facebook adna hozzá valamit). private class MyFacebookClass { public IList > data { get; set;}} vagy private class MyFacebookClass { public IList > data { get; set;}} 3 A dinamikus használata jobban működik az új verziókban. public IList > data { get; set;} Serializálás: // Convert an object to JSON string format string jsonData = rializeObject(obj); (jsonData); Deserializáció:: Dinamikus objektum deserializálása string json = @'{ 'Name': 'name', 'Description': 'des'}'; var res = serializeObject< dynamic>(json); (); Itt van egy másik webhely, amely segítséget nyújt az összes szükséges kódban, amennyiben rendelkezésre áll egy megfelelően formázott JSON-karakterlánc: Ha Core 3. 0-t használ, használhatja (amely most beépítve van) a JSON deserializálásához. Az első lépés az osztályok létrehozása a JSON modellezésére. Számos eszköz segíthet ebben, és néhány válasz itt felsorolja őket.
using System; using System. Collections. Generic; using System. Linq; using System. Net; using System. Windows; using System. Windows. Controls; using System. Navigation; using Microsoft. Phone. Controls; using Microsoft. Shell; using Newtonsoft. Json; using System. IO. IsolatedStorage; using System. IO; namespace City_Trends { public partial class UserFavourites: PhoneApplicationPage /* Szükséges redundancia (beletöltöm az OnNavigatedTo-ban, és magának az osztály konstruktorának belsejében használom fel, mint függvényparamétert. Az egységesség érdekében itt is ugyanazokat a neveket adtam a változóimnak (lsd. DetailsPage): */ private string _userFavVenue; private string _userFavID; /* A következő szótárat 2 helyen is felhasználjuk: a törlő és a hozzáadó metódusoknál. A program indulásakor * a szótárat abból a fájlból inicializáljuk, amibe az előző munkamenet idején mentettük adatainkat: private const string FavFile = " "; private static Dictionary < string, string > _favourites = new Dictionary < string, string >(); protected override void OnNavigatedTo ( NavigationEventArgs e) base.
struct SearchResult { public String jsonResult; public DictionaryrelevantHeaders;} Hírkeresési kérés létrehozása és kezelés Hozzon létre egy nevű metódust BingNewsSearch() az API hívásához, és állítsa SearchResult a visszatérési típust a korábban létrehozott struct típusra. A következő lépésekben adjon hozzá kódot ehhez a metódushoz. Hozza létre a keresési kérés URI-ját. A toSearch keresési kifejezést formázni kell, mielőtt hozzáfűzi a sztringhez. static SearchResult BingNewsSearch(string toSearch){ var uriQuery = uriBase + "? q=" + capeDataString(toSearch); //... Hajtsa végre a webes kérést, és kérje le a JSON-sztringként kapott választ. WebRequest request = (uriQuery); request. Headers["Ocp-Apim-Subscription-Key"] = subscriptionKey; HttpWebResponse response = (HttpWebResponse)tResponseAsync(); string json = new StreamReader(tResponseStream()). ReadToEnd(); Hozza létre a keresési eredmény objektumát, és nyerje ki a Bing HTTP-fejléceit. Ezután adja vissza a et searchResult.
// Create the result object for return
var searchResult = new SearchResult()
jsonResult = json,
relevantHeaders = new Dictionary
Számlakiegyenlítés: Fizetés a helyszínen SZÉP Kártya elfogadás: Vendéglátás alszámla…
Találatok a "pizza via" keresésre Pizza di Reggio Pizza di Reggio SZÉP Kártya elfogadóhely címe: 4200 Hajdúszoboszló Mátyás király sétány 17. Elérhetőségek: pizza. huTelefon: 0620/588-3337 Számlakiegyenlítés: Fizetés a helyszínen SZÉP Kártya elfogadás: Vendéglátás alszámla… Pizza Padre Pizzéria Pizza Padre Pizzéria SZÉP Kártya elfogadóhely címe: 9028 Győr Vörössipkás utca 1. Elérhetőségek: pizza Számlakiegyenlítés: Fizetés a helyszínen SZÉP Kártya elfogadás: Vendéglátás alszámla… Vanezia Pizzéria Vanezia Pizzéria SZÉP Kártya elfogadóhely címe: 5700 Gyula Jókai u. Pizza via SZÉP kártya elfogadóhelyek. 20. huTelefon: 0036-70-639-3232 Számlakiegyenlítés: Fizetés a helyszínen SZÉP Kártya elfogadás: Vendéglátás alszámla… Pizza Max Caffe Pizza Max Caffe SZÉP Kártya elfogadóhely címe: 2100 Gödöllő Dózsa György utca 36. Elérhetőségek: Telefon: +36-70-333-2102 Számlakiegyenlítés: Fizetés a helyszínen SZÉP Kártya elfogadás: Vendéglátás alszámla… Pizza Pont Pizzéria Pizza Pont Pizzéria SZÉP Kártya elfogadóhely címe: 2151 Fót Ferhérkő utca 1.
Akciónk 2022. április 1-től 2022. április 30-ig érvényes. A feltétek / köretek nem változtathatóak. Akcióink nem vonhatóak össze.