Muhtemelen route_list'i bir object
tür olarak ilan etmek istemezsiniz . Bir .test özelliği yok, bu yüzden gerçekten güzel bir nesne geri almayacaksınız. Bu, bir sınıf veya yapı tanımlamaktan veya dinamik anahtar kelimeden daha iyi yararlanabileceğiniz yerlerden biridir.
Bu kodun gerçekten sizin gibi çalışmasını istiyorsanız, DeserializeObject tarafından döndürülen nesnenin genel bir dize, nesne sözlüğü olduğunu bilmeniz gerekir. İşte bu şekilde yapmak için kod:
var json_serializer = new JavaScriptSerializer();
var routes_list = (IDictionary<string, object>)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
Console.WriteLine(routes_list["test"]);
Dinamik anahtar kelimeyi kullanmak istiyorsanız, nasıl yapılacağını buradan okuyabilirsiniz .
Bir sınıf veya yapı bildirirseniz, DeserializeObject yerine Deserialize öğesini çağırabilirsiniz:
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
özel JSON biçimlendirmesinden başka bir şey kabul etmeyeceği için aslında MS'nin sürümünü öneriyorum (örneğin tarihlere benzeyen ancak DATE () ile çevrili olmayan tarih alanları sefil bir şekilde başarısız oluyor)