Question

J'ai un JSON qui vient dans un format string . J'ai besoin de le stocker dans une valeur clé-paire ou quelque chose comme ça. J'utilise asp.net 2.0 et je ne peux pas utiliser de DLL tiers, comme Newtonsoft.Json.dll . Je suppose que la dernière option consistera à utiliser expression régulière .

Quelqu'un peut-il m'aider, s'il vous plaît?

Était-ce utile?

La solution

Si vous allez sur http://www.json.org/ et regardez vers le bas de la page il y a des dizaines de bibliothèques json dont la plupart sont open source, je crois qu’elles énumèrent 8 pour C #. Si vous ne pouvez pas faire référence à l'une de ces bibliothèques, je pense que votre meilleur choix serait d'en trouver une avec une licence permissive et d'ajouter simplement le code à votre projet.

Une autre idée consiste à consulter les diagrammes, le grammeur et la syntaxe à l'adresse http://www.json.org/ et écrivez simplement votre propre analyseur, mais l'expression rationnelle est PAS la manière de le faire. Si vous ne savez pas comment écrire un analyseur, vous pouvez consulter l’une des bibliothèques open source json ou commencer par quelque chose de moins complexe, comme un bon analyseur CSV. Voici un article qui a l’air plutôt bon: http://www.boyet.com/Articles/CsvParser.html

Autres conseils

Il est possible de sérialiser JSON à l'aide de JScript en C # en paires clé / valeur. Vous devez ajouter quelques références à votre projet. Ils font partie du framework .NET, il vous suffit d’ajouter les références à votre projet. Vous aurez besoin de:

  • Microsoft.JSript
  • Microsoft.Vsa

Tout d'abord, les utilisations au sommet de votre classe:

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

Ensuite, le moteur qui exécutera le script doit être initialisé quelque part dans votre ' Page ' code-behind:

VsaEngine Engine = VsaEngine.CreateEngine();

Il vous suffit ensuite de créer cette méthode et de l'appeler en transmettant votre objet JSON:

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

    return result;
}

Le type d'objet renvoyé (si JSON est passé) est un ' JSObject '. Vous pouvez accéder à ses valeurs sous forme de paires clé / valeur. Lisez la documentation MSDN pour plus de détails sur cet objet. .

Voici un exemple d'utilisation du 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'

Pourriez-vous utiliser JScript.NET?

Si tel est le cas, cela devrait être assez facile avec eval () - il suffit alors de parcourir les objets renvoyés et de les convertir en KeyValuePair ou autre.

Vous devrez utiliser jscript.net comme code derrière la langue, mais les autres pages de votre site devraient pouvoir rester en c # si c'est ce que vous préférez.

Comme mentionné dans le commentaire précédent, vous devez être conscient des aspects et des risques liés à la sécurité - utilisez uniquement eval si vous faites confiance au JSON que vous analysez!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top