#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, Потрудитесь объяснить, почему вы не приняли? Оно больше недействительно?