Stringa JSON da elencare o altro formato utilizzabile in asp.net 2.0
Domanda
Ho un JSON
che arriva in un formato string
. Devo memorizzarlo in un valore coppia-chiave
o qualcosa del genere. Sto usando asp.net 2.0
e non posso usare DLL
di terze parti come Newtonsoft.Json.dll
. Immagino che l'ultima opzione sarà usare espressione regolare
.
Qualcuno può aiutarmi per favore in questo?
Soluzione
Se vai su http://www.json.org/ e guardi verso il fondo di Nella pagina ci sono decine di librerie JSON, la maggior parte delle quali open source, credo che elencino 8 per C #. Se non puoi fare riferimento a una di queste librerie, penso che la soluzione migliore sarebbe trovarne una con una licenza permissiva e aggiungere semplicemente il codice al tuo progetto.
Un'altra idea è quella di esaminare i diagrammi, la grammatica e la sintassi in http://www.json.org/ e scrivi semplicemente il tuo parser, ma regex è NON il modo per farlo. Se non sai come scrivere un parser potresti guardare una delle librerie json open source o iniziare con qualcosa di meno complicato come un buon parser CSV, ecco un documento che sembra piuttosto buono: http://www.boyet.com/Articles/CsvParser.html
Altri suggerimenti
È possibile serializzare JSON usando JScript in C # in coppie chiave / valore. Devi aggiungere alcuni riferimenti al tuo progetto. Fanno parte del framework .NET, devi solo aggiungere i riferimenti al tuo progetto. Avrai bisogno di:
- Microsoft.JSript
- Microsoft.Vsa
Innanzitutto, gli utilizzi ai vertici della tua classe:
using Microsoft.JScript;
using Microsoft.JScript.Vsa;
Quindi il motore che eseguirà lo script deve essere inizializzato da qualche parte nel codice " Pagina
":
VsaEngine Engine = VsaEngine.CreateEngine();
Quindi basta creare questo metodo e chiamarlo passando l'oggetto JSON:
object EvalJScript(string JScript)
{
object result = null;
try
{
result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
}
catch (Exception ex)
{
return ex.Message;
}
return result;
}
Il tipo di oggetto
restituito (se viene passato JSON) è un ' JSObject
'. Puoi accedere ai suoi valori come coppie chiave / valore. Leggi la Documentazione MSDN per maggiori dettagli su questo oggetto .
Ecco un esempio dell'uso del codice:
string json = "({Name:\"Dan\",Occupation:\"Developer\"})";
JSObject o = EvalJScript(json) as JSObject;
string name = o["Name"] as string; // Value of 'name' will be 'Dan'
Potresti usare JScript.NET?
In tal caso, dovrebbe essere abbastanza facile con eval () - quindi basta scorrere gli oggetti restituiti e tradurli in KeyValuePair o altro
Dovrai usare jscript.net come codice dietro il linguaggio, ma altre pagine del tuo sito dovrebbero andare bene come c # se è quello che preferisci.
Come menzionato nel commento precedente, dovrai essere consapevole degli aspetti e dei rischi della sicurezza - usa eval solo se ti fidi del JSON che stai analizzando!