Mais
Converter a corda JSON em C# Objeto
Tentando converter uma string JSON em um objeto em C#. Usando um caso de teste realmente simples:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
object routes_list = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
O problema é que o route_list nunca é definido; ele's é um objeto indefinido. Alguma ideia?
174
3
Parece que você'está tentando deserializar para um objeto bruto. Você poderia criar uma Classe que representasse o objeto que você'está convertendo para. Isto seria mais útil nos casos em que você'está lidando com objetos maiores ou com o JSON Strings.
Por exemplo:
Então o seu código de desserialização seria:
Mais informações podem ser encontradas neste tutorial: http://www.codeproject.com/Tips/79435/Deserialize-JSON-with-Csharp.aspx
Você provavelmente não'não quer apenas declarar rotas_list como um
objeto
tipo. Ele não'não tem uma propriedade .test, então você realmente vai'não vai conseguir um objeto bonito de volta. Este é um daqueles lugares onde você seria melhor definir uma classe ou uma estrutura, ou fazer uso da palavra-chave dinâmica.Se você realmente quer que este código funcione como você o tem, você'precisará saber que o objeto retornado por DeserializeObject é um dicionário genérico de string,objeto. Aqui'é o código para fazer isso dessa forma:
Se você quiser usar a palavra-chave dinâmica, você pode ler como aqui.
Se você declarar uma classe ou estrutura, você pode chamar Deserialize ao invés de DeserializeObject dessa forma:
Aqui's uma simples classe que eu empedrei a partir de vários posts.... Foi testada durante cerca de 15 minutos, mas parece* funcionar para os meus propósitos. Ele utiliza o
JavascriptSerializer
para fazer o trabalho, que pode ser referenciado no seu aplicativo utilizando as informações detalhadas neste post.O código abaixo pode ser executado no LinqPad para testá-lo:
Espero que ajude!