Pergunta

Eu tenho um JSON que está chegando em um formato string. Eu preciso armazená-lo em um valor key-pair ou algo parecido. Eu estou usando asp.net 2.0 e não pode usar 3rd party DLL como Newtonsoft.Json.dll. Acho última opção será usar regular expression.

Alguém pode por favor me ajuda nisso?

Foi útil?

Solução

Se você vai para http://www.json.org/ e olhar para a parte inferior na página existem dezenas de bibliotecas JSON a maioria deles de código aberto, acredito que lista 8 para C #. Se você não pode fazer referência a uma dessas bibliotecas, acho que sua melhor aposta seria a de encontrar um com uma licença permissiva e simplesmente adicionar o código ao seu projeto.

Outra idéia é olhar para a diagramas, gramática e sintaxe em http://www.json.org/ e apenas escrever seu próprio analisador, mas regex é não a maneira de fazê-lo. Se você não sabe como escrever um parser você pode olhar para uma das bibliotecas JSON de código aberto ou iniciar com algo menos complicado como um analisador boa CSV, aqui é um papel que parece muito bom: http://www.boyet.com/Articles/CsvParser.html

Outras dicas

É possível serializar JSON usando JScript em C # em pares de chave / valor. Você precisa adicionar algumas referências ao seu projeto. Eles fazem parte do framework .NET, você só precisa adicionar as referências ao seu projeto. Você vai precisar de:

  • Microsoft.JSript
  • Microsoft.Vsa

Em primeiro lugar, os usings no topo da sua classe:

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

Em seguida, o motor que irá executar as necessidades de script para estar em algum lugar inicializada em seu 'Page' code-behind:

VsaEngine Engine = VsaEngine.CreateEngine();

Então você acabou de criar este método e chamá-lo, passando em seu 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;
}

O tipo de object devolvidos (se JSON é passado) é um 'JSObject'. Você pode acessar seus valores como pares de chave / valor. Leia a MSDN documentação para obter mais detalhes sobre este objeto .

Aqui está um exemplo de como usar o 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'

Você poderia utilizar JScript.NET?

Se assim for, deve ser suficiente fácil com eval () - em seguida, basta percorrer os objetos devolvidos e traduzir em KeyValuePair de ou qualquer

Você vai precisar usar jscript.net como o código atrás da língua, mas outras páginas do seu site deve estar bem para ficar como c # se é isso que você preferir.

Como mencionado no comentário anterior, você precisará estar ciente dos aspectos de segurança e riscos - Apenas eval uso se você confiar no JSON você está parsing

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top