使用Jquery解析Serialized JSON DataSet

时间:2010-05-06 22:51:04

标签: jquery json parsing

感谢阅读。

我编写了一个通过jsonp调用的Web服务,并返回一个.Net 3.5 DataSet,然后我想用jquery解析它。看起来getJson()方法在解析json时工作得很好。以下请求 -

            $.getJSON("http://localhost:80/ws.asmx/Example?format=json&callback=?", function(data) {
            alert(data.d);
        });

结果 -

{"Tables": [

{

  "Rows": [

    {

      "CASE_TYP_CD": "M",

      "CASE_TYP_DESC": "MOVING VIOLATION",

      "AUTO_GENERATE": "Y",

      "CONFIDENTIAL_FLG": "N"

    },

    {

      "CASE_TYP_CD": "T",

      "CASE_TYP_DESC": "TRUANCY/FAILURE TO ATTEND SCHOOL",

      "AUTO_GENERATE": "Y",

      "CONFIDENTIAL_FLG": "N"

    },

    {

      "CASE_TYP_CD": "J",

      "CASE_TYP_DESC": "JUVENILE",

      "AUTO_GENERATE": "Y",

      "CONFIDENTIAL_FLG": "N"

    }...

嗯,我对整个json事情有点新意,我无法弄清楚如何获取节点中保存的值。

我以为它会像 -

$.each("CASE_TYP_CD", function() { //code goes here });

但这似乎不起作用。

有人可以帮我解决这个问题吗?

提前致谢!

5 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可能想要阅读一般的JavaScript对象文字(与JSON非常相似)。

我从JSON看到的是,在第一个表的第一行中获取CASE_TYP_CD的值 写

var result = <json>;
var val result.Table[0].Rows[0].CASE_TYP_CD;

是你想知道的吗?

答案 2 :(得分:0)

以下是使用$ .each()迭代对象的方法:

$.each(data.d.Tables, function(index, table) {
    $.each(table.Rows, function(index, row) {
        alert(row.CASE_TYP_CD);
    });
});

答案 3 :(得分:0)

我非常确定DataSet在我的网络服务中的序列化方式。

每当我尝试一种方法,包括那里建议的方法,我会得到两个javascript错误 -

Message: 'length' is null or not an object
Line: 29
Char: 452
Code: 0
URI: js/jquery-1.4.2.min.js

Message: Object doesn't support this property or method
Line: 1
Char: 1
Code: 0
URI: /GetCaseTypes?format=json&callback=jsonp1273246775675

感谢您提出的所有建议,但看起来我的问题在于DataSet的序列化,而不在我的jquery代码中。

答案 4 :(得分:0)

我想出了问题,显然getJson方法实际上并没有将json字符串解析为java对象,就像它应该的那样。我只需要添加

var obj = $.parseJSON(data.d);
alert(obj.Table[0].CASE_TYP_CD);

一切都按预期工作。

感谢所有发布在这里的人。