【问题标题】:How to parse JSON string to get original data如何解析 JSON 字符串以获取原始数据
【发布时间】:2016-09-29 07:59:31
【问题描述】:

我是新手。

我正在使用 JSON 字符串。

我的 jquery 看起来像

      var data1 = {};                            
      data1.code = $("#ddlList option:selected").text();   //Taking dropdown list value


           $.ajax({
                type: "POST",
                url: "Default.aspx/GetData",
                data: JSON.stringify(data1),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var data = JSON.stringify(data);
                    var data = $.parseJSON(data);

                    $.each(data, function (i) {
                        $("#Table").append("<tr><td>"  "</td></tr>");
                    });

我的GetData WebMethod 正在返回一个包含数据表数据的 JSON 字符串

       {["\"id"\:"\"10001"\"\"name"\:"\"ABC"\]}         //JSON string

包含以下内容

          System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
            Dictionary<string, object> row;
            foreach (DataRow dr in dt.Rows)
            {
                row = new Dictionary<string, object>();
                foreach (DataColumn col in dt.Columns)
                {
                    row.Add(col.ColumnName, dr[col]);
                }
                rows.Add(row);
            }
            return serializer.Serialize(rows);   

return serializer.Serialize(rows); 返回上面的 JSON 字符串,但我想在成功函数中将此 JSON 字符串转换为服务器端的表

我检查了我的解决方案,我在成功函数中获得了字符串值。 我尝试了上面的 jquery 函数,但我想要表中的 JSON 字符串值(如何反序列化它以便获取表)

(我已经修改$("#Table").append("&lt;tr&gt;&lt;td&gt;" "&lt;/td&gt;&lt;/tr&gt;");)

【问题讨论】:

  • var data = JSON.stringify(data); var data = $.parseJSON(data); ? data 已经是一个对象
  • 是的。这里的数据是{["\"id"\:"\"10001"\"\"name"\:"\"ABC"\]} 我不知道怎么解析。因为我想要 id 和 name 作为列,10001 和 ABC 作为 tr 数据
  • jQuery 会为您解析 JSON,以便成功函数中的 data 参数已经是一个对象。您可以使用data[0].id 访问数组中第一项的ID;名称将是data[0].name。
  • 您是否验证了您在可变数据中获得的价值?并检查您在 data.d 中获得的价值

标签: javascript jquery asp.net json


【解决方案1】:

使用JSON.parse 解析您的数据,然后在您的$.each 中使用两个参数i、v,其中i 是索引,v 是对象,并以v.id 和v.name 访问您的值。要指定哪一列代表什么,只需将表的标题指定为$('#Table').append("&lt;th&gt;&lt;td&gt;ID&lt;/td&gt;&lt;td&gt;NAME&lt;/td&gt;&lt;/th&gt;");

$.ajax({
                type: "POST",
                url: "Default.aspx/GetData",
                data: JSON.stringify(data1),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var data = JSON.parse(data);
                    $('#Table').append("<th><td>ID</td><td>NAME</td></th>");
                    $.each(data.d, function (i, v) {
                        var str = "<tr><td>" + v.id +"</td><td>" + v.name + "</td></tr>";
                        $("#Table").append(str);
                    });

          });

【讨论】:

  • 感谢您的解决方案。我已经试过了。但获取值为undefined undefined
  • @A.Dubey 您可以打印您在成功函数中获得的正确格式的数据,然后在您的代码中发布。您的原始版本不正确
  • 你的意思是我写了正确的 JSON 字符串??
  • 是的,例如 {'values': [{'id': '3', 'name': 'abc'}, {'id': '5', 'name': 'cfd '}]}
  • 现在在解析响应后,您可以使用 $.each(data.d, function(){}) 对其进行循环
猜你喜欢
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
相关资源
最近更新 更多