JSON-String zur Liste oder anderes nutzbares Format in asp.net 2.0
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?
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