【问题标题】:jquery how to deserialize json object [duplicate]jquery如何反序列化json对象[重复]
【发布时间】:2013-03-26 16:21:45
【问题描述】:

如何反序列化下面的这个json对象?

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

我尝试在下面执行此操作,但无法成功...

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 对象的方式

[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;
}

【问题讨论】:

  • 看起来你可能是服务器端的双重json编码。
  • 您是以 JSON 格式还是文本格式检索它?请分享您的 AJAX 调用的其余部分。
  • 我正在检索文本
  • 与其自己编写 Json(在您的 c# 中)相比,您可能会发现使用 JSON.Net 之类的工具更容易且不易出错:james.newtonking.com/projects/json-net.aspx
  • .net 实际上包含用于处理 json 的类:msdn.microsoft.com/ru-ru/library/…

标签: jquery asp.net json


【解决方案1】:

你可以这样做:

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

var json = $.parseJSON(mydata);

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

【讨论】:

【解决方案2】:
var object = JSON.parse(data);

现在您无法访问所有属性。比如object.id

【讨论】:

    【解决方案3】:

    如果你真的想用jQuery,here is the function 但是,任何当代浏览器都有功能

    JSON.parse()
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        我认为这是您需要的:JSON.parse(data)

        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);
              });
        }
        

        【讨论】:

          猜你喜欢
          • 2019-06-20
          • 1970-01-01
          • 2017-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-23
          • 2011-12-23
          相关资源
          最近更新 更多