2008-09-19 6 views
1

J'ai un JSON qui vient dans un format string. Je dois le stocker dans une valeur key-pair ou quelque chose comme ça. J'utilise asp.net 2.0 et ne peux pas utiliser la 3ème partie DLL comme Newtonsoft.Json.dll. Je suppose que la dernière option sera d'utiliser regular expression.Chaîne JSON à la liste ou tout autre format utilisable dans asp.net 2.0

Quelqu'un peut-il m'aider s'il vous plaît dans ce domaine?

Répondre

4

Si vous allez à http://www.json.org/ et regardez vers le bas de la page il ya des dizaines de bibliothèques json la plupart d'entre eux open source, je crois qu'ils listent 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 est de regarder les schémas, Grammer, et la syntaxe à http://www.json.org/ et il suffit d'écrire votre propre analyseur, mais regex est PAS la façon de le faire. Si vous ne savez pas comment écrire un analyseur, vous pouvez regarder l'une des bibliothèques JSON open source ou commencer avec quelque chose de moins compliqué comme un bon analyseur CSV, voici un article qui semble assez bon: http://www.boyet.com/Articles/CsvParser.html

0

Pourriez-vous utiliser JScript.NET?

Si oui, devrait être assez facile avec eval() - puis juste boucle à travers les objets renvoyés et se traduire par de KeyValuePair ou quoi que

+0

Bien sûr, cela doit veeeery ATTENTIVEMENT être vérifié comme il est une atteinte à la sécurité probable. – millenomi

-1

Vous devrez utiliser jscript.net comme le code derrière la langue, mais d'autres pages de votre site devrait être bien de rester comme C# si c'est ce que vous préférez.

Comme mentionné dans le commentaire précédent, vous devez être conscient des aspects de sécurité et des risques - utilisez uniquement eval si vous faites confiance au JSON que vous êtes en train d'analyser!

3

Il est possible de sérialiser JSON en utilisant JScript en C# dans les 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:

  • Microsoft.JSript
  • Microsoft.Vsa

D'abord, les usings en haut de votre classe:

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

Ensuite, le moteur qui exécutera le script doit être initialisé quelque part dans le code suivant:

VsaEngine Engine = VsaEngine.CreateEngine(); 

Ensuite, vous venez de créer cette méthode et l'appeler en passant dans 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 de object retourné (si JSON est passé dans) est un « JSObject ». Vous pouvez accéder à ses valeurs en tant que paires clé/valeur. Lisez le MSDN documentation 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'