string JSON à lista ou outro formato utilizável em asp.net 2.0
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?
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