Разбор сериализованного набора данных JSON с использованием Jquery - PullRequest
0 голосов
/ 07 мая 2010

и спасибо за чтение.

Я написал веб-сервис, который вызывается через jsonp и возвращает .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 ]

1 голос
/ 07 мая 2010
0 голосов
/ 07 мая 2010

Я понял проблему, очевидно, метод getJson на самом деле не разбирал строку json в объект java, как это должно было быть. Я просто должен был добавить

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

и все заработало как положено.

Спасибо всем, кто разместил здесь.

0 голосов
/ 07 мая 2010

Я почти уверен, что что-то не так с сериализацией набора данных в моем веб-сервисе.

Всякий раз, когда я пробую метод, включая предложенные здесь, я получаю две ошибки 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.

0 голосов
/ 07 мая 2010

вот как бы вы перебрали свой объект с помощью $ .each ():

$.each(data.d.Tables, function(index, table) {
    $.each(table.Rows, function(index, row) {
        alert(row.CASE_TYP_CD);
    });
});
0 голосов
/ 07 мая 2010

Возможно, вы захотите прочитать общие литералы объектов JavaScript (которые очень похожи на JSON).

Что я вижу в JSON, чтобы получить значение CASE_TYP_CD в первой строке первой таблицы, которую вы написать

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

это то, что вы хотели знать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...