Come si serializzano ScriptObjects su JSON per salvare in Silverlight Isolated Storage?
-
02-07-2019 - |
Domanda
Secondo questo articolo Silverlight 2 Beta 2 supporta l'oggetto DataContractJsonSerializer
. Ma, quando provo ad usarlo, VS dice
" Tipo 'DataContractJsonSerializer' non definito " ;.
Ho un metodo contrassegnato come ScriptableMember che viene chiamato da JavaScript e viene passato un oggetto. All'interno di questo metodo devo serializzare l'oggetto su una stringa (preferibilmente JSON) e quindi salvarlo in un archivio isolato.
Silverlight 2 Beta 2 supporta davvero DataContractJsonSerializer? O qualcuno consiglierebbe un metodo diverso per salvare JavaScript creato ScriptObject nella memoria isolata?
Soluzione
In realtà la risposta è, DataContractJsonSerializer fa parte di Silverlight 2 Beta 2, ma è necessario aggiungere un riferimento a System.ServiceModel.Web al progetto Silverlight per usarlo.
Non mi rendevo conto che dovevi ancora aggiungere riferimenti a dll in Silverlight. Ho pensato che includesse automaticamente tutto in modo simile a come fa ASP.NET.
Altri suggerimenti
Esiste una versione Silverlight di Json.NET che serializzerà i tuoi oggetti su JSON. Non richiede gli attributi [DataContract] e [DataMember] su tutti i tuoi oggetti.
Per ora, l'unica soluzione a questo che ho trovato è utilizzare ASP.NET AJAX JavaScriptSerializer per eseguire la serializzazione / deserializzazione JSON in JavaScript, quindi utilizzare Silverlight per archiviare / recuperare la stringa risultante.
Sys.Serialization.JavaScriptSerializer.serialize(obj);
Sys.Serialization.JavaScriptSerializer.deserialize(json);
Direi che la tua risposta sarebbe l'approccio migliore. JavaScript è molto lento nel fare cose del genere, quindi è meglio lasciare la parte di serializzazione su ASP.NET.