2014-07-06 6 views
1

J'ai un code dans le fichier asp.net de ashx:Accès Valeur objet JSON

jsonString="{'id':'54','name':'reza'}"; 
JavaScriptSerializer j = new JavaScriptSerializer(); 
var a = j.Deserialize(jsonString, typeof(object)); 

et récupère la chaîne JSON et convertir à « un » objet, comment puis-je obtenir la valeur d'un? par exemple j'ai besoin d'obtenir la valeur du champ id dans [id, 54]?

Répondre

1

Puisque vous ne spécifiez pas un type de cible fortement typé pour la désérialisation (autre que object), JavaScriptSerializer retournera un Dictionary<string, object> et vous aurez accès comme suit:

string jsonString = "{'id':'54','name':'reza'}"; 
JavaScriptSerializer j = new JavaScriptSerializer(); 
dynamic data = j.Deserialize(jsonString, typeof(object)); 
string id = data["id"]; // equals 54 

Pourtant, mieux vous définissez votre propre type personnalisé pour accéder aux données désérialisées. Quelque chose comme:

public class Person 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

string jsonString = "{'id':'54','name':'reza'}"; 
JavaScriptSerializer j = new JavaScriptSerializer(); 
Person person = j.Deserialize<Person>(jsonString); 
string id = person.id; // equals 54 
+1

+1 À noter que la chaîne ne contient * pas * JSON valide. Cependant, il contient du JavaScript valide, ce que je suppose que le sérialiseur est heureux de travailler avec. –

+0

@Behzad Razzaqi, soin d'expliquer pourquoi avez-vous accepter? Est-ce que ce n'est plus valide? – haim770