2012-02-07 9 views
0

私はこの全体のJSONやjQueryのものに新鮮だし、私は、DelphiのDataSnapからのJSONの構造、例えば読みしようとしている:私は、jQueryを使ってより多くのespecificallyフィールドを、それを読むことができますどのようにフィールドを読み取る方法:{} JQueryを使用したJSON結果内のコンテンツ?

{"result":[[{"type":"VOMesas.TMesas","id":1,"fields":{ "FUsers":1,"FEnclosing":0,"FClientName":"","FCode":100,"FStatus":1,"FTotalValue":128.25}}]]} 

を:{...}コンテンツ?

EDIT:あなたはjQuery.ajaxまたは類似を介してデータをロードしているし、それが正しいMIMEタイプで返される(またはあなたがjQuery.ajaxを伝える場合は、ここで

function getContent(order) { 
     $.getJSON("query.json", 
    function(data) { 
     $.each(data.result, function(i, item) { 

     var grid = '<table border="1">'; 

     for (var i=0; i < item.length; i++){ 
      CAMPO = item[i]; 

      ... 

答えて

1

をやろうとした機能イムですあなたが戻ってきたのはJSONです)、successコールバックで受け取ったものは、逆シリアル化されたオブジェクト(JSONではなくJSONが記述したオブジェクト)になります。それはケースであること、あなただけ例えば、オブジェクトのプロパティにアクセス:

$.ajax({ 
    // ... 
    success: function(data) { 
     var fields = data.result[0][0].fields; 
    } 
}); 

dataにエントリが1つだけ(そう、エントリー[0])を持つ配列ですresultプロパティを持つオブジェクトを指し示す変数、さこれはそれ自体が正確に1つのエントリ(つまり、[0]のエントリ)を持つ別の配列です。これは、fieldsというプロパティを持つオブジェクトです。絵:

var data = $.parseJSON(str); 

を...そして上記はfieldsにアクセスするか:あなたには、いくつかの他の方法でデータを取得しているし、それはまだ文字列なら

{          // <== data 
    "result": [       // <== data.result 
     [        // <== data.result[0] 
      {       // <== data.result[0][0] 
       "type": "VOMesas.TMesas", 
       "id": 1, 
       "fields": {    // <== data.result[0][0].fields 
        "FUsers": 1, 
        "FEnclosing": 0, 
        "FClientName": "", 
        "FCode": 100, 
        "FStatus": 1, 
        "FTotalValue": 128.25 
       } 
      } 
     ] 
    ] 
} 

は、あなたがjQuery.parseJSONを使用して、それをデシリアライズすることができます。

+0

タイ、試してみます。しかし、ちょうど1つの質問、jQuery.parseJSON(json)はJSON構造体を受け取っていますか?そして、これが構造体がFile/URLから来ているのであれば? – Tutch

+0

@Tutch:私はそれは問題ではないと思います。整形式のJSON文字列を指定する限り、 'parseJSON'は正しく解析します。 –

+0

@Tutch: 'jQuery.parseJSON'は**文字列**を受け入れます。文字列にはJSON表記のテキストが含まれます。 URLからJSONをロードする場合、 'ajax'の例がより適切です。 JSONを取得するために呼び出しているエンドポイントが(適切なMIMEタイプを使用して)JSONを正しく処理する場合、jQueryはそれを逆シリアル化します。MIMEタイプが間違っている場合は、 'dataType'オプションを使用して強制することができます。 JSONではなく** [JSON-P](http://en.wikipedia.org/wiki/JSONP#JSONP)**を使用している場合は、必ずjQueryに通知してください。 –

1

JSONの文字列がある場合は、単にJSON.parseを使用してJavascriptオブジェクトに変換します。意識することで

var datasnap = '{"result":[[{"type":"VOMesas.TMesas","id":1,"fields": FUsers":1,"FEnclosing:0,"FClientName":"","FCode":100,"FStatus":1,"FTotalValue":128.25}}]]}'; 
var data = JSON.parse(datasnap); 
var fields = data['result'][0]['fields']; 

は、しかし、あなたはあなたの質問に貼り付けてきたJSONは無効であること:

{ 
    "result": [ 
     [ 
      { 
       "type": "VOMesas.TMesas", 
       "id": 1, 
       "fields": FUsers":1,"FEnclosing: 0, //unbalanced " 
       "FClientName": "", 
       "FCode": 100, 
       "FStatus": 1, 
       "FTotalValue": 128.25 
      } 
     } //unbalanced } 
    ] 
] 
} 
+1

"result"の後ろには2つの括弧があります。したがって、1つの – devnull69

0

まず:あなたは、変数「MyObjectに」にあなたのJSONオブジェクトを割り当てると仮定しましょう。次に、あなたが行うことができます

var myfields = myobject.result[0][0].fields; 
+0

JSONオブジェクトではなく、2つの連続した配列インデックスを使用する必要があります。オブジェクトグラフに逆シリアル化されると、JSONとは何の関係もありません。ソースコードのような*テキスト形式の表記です。 –

+0

ok JSONは、オブジェクトのテキスト表記(JSONがまさに意味するもの)です。だから、あなたとあなたの名前の違いは同じです。しかし、私はいつもあなたの名前であなたに電話し、あなたはまだ反応しています:-) – devnull69

0

このコード例はjQuery/JSONのことを理解するのに役立ちます。

サンプルJSONオブジェクトを配列として取得しました。 JSONのキーと値のペアを読み込んで小さなHTMLを埋め込みます。

作業例:http://jsfiddle.net/ylokesh/WC84k/

関連する問題