关于asp.net:jquery如何反序列化json对象

jquery how to deserialize json object

本问题已经有最佳答案,请猛点这里访问。

如何反序列化下面的JSON对象?

1
[{"id":"67","name":"TestString"}]

我在下面试着这么做,但没能成功…

1
2
3
4
5
6
7
8
9
10
success: function (data, status) {
          $.each(data, function (dt) {

              var mydata = data.d;

              alert(mydata); // returns [{"id":"67","name":"TestString"}]

              $("#txt_speciality").tokenInput("add", mydata.id);
          });
}

下面是我创建JSON对象的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[WebMethod]
public static string get_specialities(string ProfessionalID)
{
    Database db = DatabaseFactory.CreateDatabase("Connection String2");
    DbCommand dbCommand;
    dbCommand = db.GetStoredProcCommand("Select_Professionals_Speciality");
    db.AddInParameter(dbCommand,"prof_id", DbType.Int16, Convert.ToInt16(ProfessionalID));
    IDataReader dr = db.ExecuteReader(dbCommand);
    //[{ id: 3, name:"test3" }]
    string return_str="[";
    int i = 0;
    while (dr.Read()) {
        if (i > 0)
            return_str +=",";
        return_str +="{"id":"" + dr["SpecialtyID"].ToString().Trim() +"","name":"" + dr["SpecialtyName"].ToString().Trim() +""}";
        i++;
    }
    return_str +="]";
    return return_str;
}


您可以使用以下方法进行此操作:

1
2
3
var mydata; // [{"id":"67","name":"TestString"}]

var json = $.parseJSON(mydata);

json变量将包含反序列化的json对象


我假设这就是您需要的:json.parse(数据)

1
2
3
4
5
6
7
8
9
10
11
success: function (data, status) {
          data = JSON.parse(data);
          $.each(data, function (dt) {

          var mydata = data.d;

          alert(mydata); // returns [{"id":"67","name":"TestString"}]

          $("#txt_speciality").tokenInput("add", mydata.id);
      });
}


如果您真的想使用jquery,这里有一个函数,但是任何一个当代的浏览器都有函数

1
JSON.parse()

1
var object = JSON.parse(data);

现在你可以进入所有的房间了。例如object.id


如果您是以文本形式检索数据,那么它不会在到达时被解析为数组,而是作为字符串。

在你的$.ajax()选项中使用.getJSONdatatype:json来解决这个问题。