Probablemente no quiera declarar rutas_lista como un object
tipo. No tiene una propiedad .test, por lo que realmente no va a recuperar un buen objeto. Este es uno de esos lugares donde sería mejor definir una clase o una estructura, o hacer uso de la palabra clave dinámica.
Si realmente desea que este código funcione como lo tiene, necesitará saber que el objeto devuelto por DeserializeObject es un diccionario genérico de cadena, objeto. Aquí está el código para hacerlo de esa manera:
var json_serializer = new JavaScriptSerializer();
var routes_list = (IDictionary<string, object>)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
Console.WriteLine(routes_list["test"]);
Si desea utilizar la palabra clave dinámica, puede leer cómo aquí .
Si declara una clase o estructura, puede llamar a Deserialize en lugar de DeserializeObject de la siguiente manera:
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
versión sobre MS, ya que no aceptará nada más que el formato JSON personalizado de WCF (por ejemplo, los campos de fecha que parecen fechas pero no están rodeados en DATE () fallan miserablemente)