Доступ к значению объекта json

#c# #asp.net #json

#c# #asp.net #json

Вопрос:

У меня есть этот код в asp.net файл ashx:

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

и получить строку Json и преобразовать в объект ‘a’, как я могу получить значение a?
например, мне нужно получить значение поля id в [id, 54]?

Ответ №1:

Поскольку вы не указываете строго типизированный целевой тип для десериализации (отличный от object ), JavaScriptSerializer вернет Dictionary<string, object> , и вам придется обращаться к нему следующим образом:

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

Тем не менее, вам лучше определить свой собственный пользовательский тип для доступа к десериализованным данным. Что-то вроде:

 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 Стоит отметить, что строка не содержит допустимый JSON. Тем не менее, он содержит допустимый JavaScript, с которым, я полагаю, сериализатор будет рад работать.

2. @Behzad Razzaqi, Потрудитесь объяснить, почему вы не приняли? Оно больше недействительно?