Frage

Ich habe eine JSON, die in einem string Format kommen. Ich brauche es in einem key-pair Wert zu speichern oder so ähnlich. Ich verwende asp.net 2.0 und nicht die 3rd-Party-DLL wie Newtonsoft.Json.dll nutzen können. Ich denke, letzte Option wird regular expression zu verwenden.

Kann jemand mir bitte dabei helfen?

War es hilfreich?

Lösung

Wenn Sie gehen auf http://www.json.org/ und schauen Sie nach unten von die Seite gibt es Dutzende von json Bibliotheken die meisten von ihnen Open Source, ich glaube, sie 8 für C # Liste. Wenn Sie nicht eine dieser Bibliotheken verweisen können, denke ich, die beste Wahl eine mit einer permissiven Lizenz zu finden wäre und einfach den Code zu Ihrem Projekt hinzufügen.

Eine weitere Idee ist in den Diagrammen, grammer und Syntax unter http://www.json.org/ aussehen und einfach Ihren eigenen Parser schreiben, aber regex ist nicht die Art und Weise, es zu tun. Wenn Sie nicht wissen, wie man einen Parser schreiben Sie an einen der Open-Source-json Bibliotheken oder beginnen Sie mit etwas weniger kompliziert wie ein guten CSV-Parser aussehen könnten, ist hier ein Papier, das ziemlich gut aussieht: http://www.boyet.com/Articles/CsvParser.html

Andere Tipps

Es ist möglich, JSON mit JScript in C # in Schlüssel / Wert-Paare serialisieren. Sie müssen ein paar Verweise auf Ihrem Projekt hinzuzufügen. Sie sind Teil des .NET-Frameworks, man muss nur die Verweise auf Ihrem Projekt hinzufügen. Sie benötigen:

  • Microsoft.JSript
  • Microsoft.Vsa

Als erstes werden die usings an der Spitze der Klasse:

using Microsoft.JScript;
using Microsoft.JScript.Vsa;

Dann wird der Motor, der das Skript ausführt muss irgendwo in Ihrem Page 'Code-behind initialisiert werden:

VsaEngine Engine = VsaEngine.CreateEngine();

Dann erstellen Sie einfach diese Methode und nennen Sie es, indem sie in Ihrem JSON-Objekt übergeben:

object EvalJScript(string JScript)
{
    object result = null;
    try
    {
        result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
    }
    catch (Exception ex)
    {
        return ex.Message;
    }

    return result;
}

Die Art der object zurückgegeben (wenn JSON übergeben wird) ist ein ‚JSObject‘. Sie können ihre Werte als Schlüssel / Wert-Paare zugreifen. Lesen Sie die MSDN-Dokumentation für weitere Details zu diesem Objekt .

Hier ist ein Beispiel mit dem Code:

string json = "({Name:\"Dan\",Occupation:\"Developer\"})";

JSObject o = EvalJScript(json) as JSObject;

string name = o["Name"] as string; // Value of 'name' will be 'Dan'

Könnten Sie verwenden JScript.NET?

Wenn ja soll, leicht genug, um mit eval () - dann nur einer Schleife durch die Objekte zurückgegeben und übersetzt in KeyValuePair sind oder was auch immer

Sie müssen wie der Code-behind Sprache verwenden jscript.net, aber auch andere Seiten Ihrer Website sollte als c # zu bleiben in Ordnung sein, wenn das ist, was Sie bevorzugen.

Wie bereits in früheren Kommentar erwähnt, müssen Sie sich bewusst die Sicherheitsaspekte und Risiken sein - nur eval verwenden, wenn Sie die JSON vertrauen Sie Parsen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top