1

課題: 次の json を読み取り/解析する方法:

> {"d":"{\"NewDataSet\":{\"Table\":{\"LICENSE_PLATE\":\"PLATE
> 1\",\"PARKING_LOCATION\":\"1001\",\"START_TIME\":\"05:05:00\"}}}"}

試みたアプローチ:

var objNDS = jQuery.parseJSON(e.d); //where e.d is the above returned json
var objTbl = objNDS.NewDataSet.Table;
var tblARR = [];
$.each(objTbl, function (i, val) {
  tblARR.push([val.LICENSE_PLATE, val.PARKING_LOCATION, val.START_TIME]);
});

ご協力いただきありがとうございます。

4

2 に答える 2

2

示されているように、あなたTableはリストではありません。を使用$.eachすると、キーと値のペアが繰り返されるため、次のようになります。

i                 val
LICENSE_PLATE     PLATE1
PARKING_LOCATION  1001
START_TIME        05:05:00

おそらくあなたの入力は間違っています、そしてあなたが意味するのは実際には:

...\"Table\":[{\"LICENSE_PLATE\":...}, {\"LICENSE_PLATE\":...}]...

入力が正しく、Table値が1つしかない場合は、代わりに直接使用eachしてクエリを実行しないでください。objTbl

tblARR.push([objTbl.LICENSE_PLATE, objTbl.PARKING_LOCATION, objTbl.START_TIME]);

更新:両方のフォームが表示できる場合objTblは、が配列であるかどうかをテストし、そうでない場合はラップします(ただし、サーバーはこのデータを正規化して送信する必要があります)。その後、元のコードはそのまま機能します。

if ( !(objTbl instanceof Array) )
    objTbs = [objTbl];
$.each(objTbl, function(i, val) {
    tblARR.push([val.LICENSE_PLATE, val.PARKING_LOCATION, val.START_TIME]);
});
于 2012-10-31T22:16:18.917 に答える
0

私はあなたが達成しようとしていることを解釈し、JS フィドルの実装をまとめようとしました。「e」変数の形式を変更する必要があったことに注意してください。

var e = {"d":"{\"NewDataSet\":{\"Table\":[{\"Plate\":{\"LICENSE_PLATE\":\"PLATE 1\",\"PARKING_LOCATION\":\"1001\",\"START_TIME\":\"05:05:00\"}}, {\"Plate\": {\"LICENSE_PLATE\":\"PLATE 1\",\"PARKING_LOCATION\":\"1001\",\"START_TIME\":\"05:05:00\"}}]}}"};

次に、通常のforループでループします。

リンクは: http://jsfiddle.net/Dracorat/EFcjA/10/

于 2012-10-31T23:04:26.530 に答える