Você provavelmente não deseja apenas declarar routes_list como um object
tipo. Ele não possui uma propriedade .test, então você realmente não receberá um bom objeto de volta. Este é um daqueles lugares em que seria melhor definir uma classe ou uma estrutura ou usar a palavra-chave dinâmica.
Se você realmente deseja que esse código funcione como você o possui, você precisará saber que o objeto retornado por DeserializeObject é um dicionário genérico de string, objeto. Aqui está o código para fazer dessa maneira:
var json_serializer = new JavaScriptSerializer();
var routes_list = (IDictionary<string, object>)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
Console.WriteLine(routes_list["test"]);
Se você deseja usar a palavra-chave dinâmica, pode ler como aqui .
Se você declarar uma classe ou estrutura, poderá chamar Deserialize em vez de DeserializeObject da seguinte maneira:
class MyProgram {
struct MyObj {
public string test { get; set; }
}
static void Main(string[] args) {
var json_serializer = new JavaScriptSerializer();
MyObj routes_list = json_serializer.Deserialize<MyObj>("{ \"test\":\"some data\" }");
Console.WriteLine(routes_list.test);
Console.WriteLine("Done...");
Console.ReadKey(true);
}
}
JavaScriptSerializer
sobre a versão do MS, pois não irá aceitar qualquer outra coisa, mas do WCF personalizado formatação JSON (por exemplo, campos de data que se parecem com datas, mas não são cercados em DATE () falhar miseravelmente)