簡體   English   中英

使用 Jquery 解析序列化的 JSON 數據集

[英]Parsing Serialized JSON DataSet using Jquery

並感謝您的閱讀。

我編寫了一個通過 jsonp 調用的 Web 服務,並返回一個 .Net 3.5 DataSet,然后我想使用 jquery 對其進行解析。 就解析 json 而言,似乎 getJson() 方法工作正常。 以下請求——

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

但這似乎不起作用。

有人可以幫我解決這個問題嗎?

提前致謝!

您可能想要閱讀通用 JavaScript 對象文字(與 JSON 非常相似)。

我從 JSON 中看到的,獲取您編寫的第一個表的第一行中 CASE_TYP_CD 的值

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

這是你想知道的嗎?

以下是使用 $.each() 遍歷對象的方法:

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

我很確定數據集在我的 Web 服務中的序列化方式有問題。

每當我嘗試一種方法時,包括這里建議的方法,我都會收到兩個 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 代碼。

我發現了這個問題,顯然 getJson 方法實際上並沒有像它應該的那樣將 json 字符串解析成一個 java 對象。 我只需要添加

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

一切都按預期進行。

感謝所有在這里發帖的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM