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?

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top