Pregunta

tengo uno JSON eso viene en un string formato.Necesito guardarlo en un key-pair valor o algo asi.estoy usando asp.net 2.0 y no puede utilizar terceros DLL como Newtonsoft.Json.dll.Supongo que la última opción será usar regular expression.

¿Alguien puede ayudarme en esto?

¿Fue útil?

Solución

Si vas a http://www.json.org/ y mire hacia la parte inferior de la página, hay docenas de bibliotecas json, la mayoría de ellas de código abierto, creo que enumeran 8 para C#.Si no puede hacer referencia a una de estas bibliotecas, creo que lo mejor sería encontrar una con una licencia permisiva y simplemente agregar el código a su proyecto.

Otra idea es mirar los diagramas, la gramática y la sintaxis en http://www.json.org/ y simplemente escribe tu propio analizador, pero la expresión regular es NO la forma de hacerlo.Si no sabe cómo escribir un analizador, puede consultar una de las bibliotecas json de código abierto o comenzar con algo menos complicado como un buen analizador CSV. Aquí tiene un documento que se ve bastante bien: http://www.boyet.com/Articles/CsvParser.html

Otros consejos

Es posible serializar JSON usando JScript en C# en pares clave/valor.Necesita agregar algunas referencias a su proyecto.Son parte del marco .NET, solo necesita agregar las referencias a su proyecto.Necesitarás:

  • Microsoft.JSript
  • Microsoft.Vsa

Primero, los usos en la parte superior de tu clase:

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

Luego, el motor que ejecutará el script debe inicializarse en algún lugar de su 'Page' código detrás:

VsaEngine Engine = VsaEngine.CreateEngine();

Luego simplemente crea este método y llámelo pasando su objeto JSON:

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

    return result;
}

El tipo de object devuelto (si se pasa JSON) es un 'JSObject'.Puede acceder a sus valores como pares clave/valor.Leer el documentación de MSDN para más detalles sobre este objeto.

A continuación se muestra un ejemplo del uso del código:

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

JSObject o = EvalJScript(json) as JSObject;

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

¿Podrías utilizar JScript.NET?

Si es así, debería ser bastante fácil con eval(); luego simplemente recorra los objetos devueltos y tradúzcalos a KeyValuePair o lo que sea.

Necesitará usar jscript.net como código detrás del lenguaje, pero otras páginas de su sitio deberían funcionar como c# si eso es lo que prefiere.

Como se mencionó en el comentario anterior, deberá conocer los aspectos y riesgos de seguridad: ¡use eval solo si confía en el JSON que está analizando!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top