2016-05-25 13 views
0

下記のように、Google Spreadsheet URLからJSON形式のデータを取得しています。 (代替link to JSON file。)私はちょうどそれを解析し、基礎となるデータを表示したい。私が望むすべてのデータが同じラベル、vで識別されるとすれば、どうすればそれを達成できますか?JSON文字列から特定のデータを表示する方法は?

google.visualization.Query.setResponse({ 
    "version":"0.6", 
    "reqId":"0", 
    "status":"ok", 
    "sig":"1326357147", 
    "table":{ 
     "cols":[ 
     { 
      "id":"A", 
      "label":"Ref", 
      "type":"number", 
      "pattern":"General" 
     }, 
     { 
      "id":"B", 
      "label":"ÃÂrea", 
      "type":"string" 
     }, 
     { 
      "id":"C", 
      "label":"Curso", 
      "type":"string" 
     } 
     ], 
     "rows":[ 
     { 
      "c":[ 
       { 
        "v":1.0, 
        "f":"1" 
       }, 
       { 
        "v":"Diseño" 
       }, 
       { 
        "v":"Flash CS4 básico" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":2.0, 
        "f":"2" 
       }, 
       { 
        "v":"Diseño" 
       }, 
       { 
        "v":"Freehand MX " 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":3.0, 
        "f":"3" 
       }, 
       { 
        "v":"Diseño" 
       }, 
       { 
        "v":"Illustrator CS5" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":4.0, 
        "f":"4" 
       }, 
       { 
        "v":"Diseño" 
       }, 
       { 
        "v":"Photoshop CS4 avanzado" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":5.0, 
        "f":"5" 
       }, 
       { 
        "v":"Informática" 
       }, 
       { 
        "v":"Word" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":6.0, 
        "f":"6" 
       }, 
       { 
        "v":"Informática" 
       }, 
       { 
        "v":"Excel" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":7.0, 
        "f":"7" 
       }, 
       { 
        "v":"Informática" 
       }, 
       { 
        "v":"Access" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":8.0, 
        "f":"8" 
       }, 
       { 
        "v":"Informática" 
       }, 
       { 
        "v":"Outlook " 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":9.0, 
        "f":"9" 
       }, 
       { 
        "v":"Informática" 
       }, 
       { 
        "v":"Powerpoint " 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":10.0, 
        "f":"10" 
       }, 
       { 
        "v":"Informática" 
       }, 
       { 
        "v":"Office 2007" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":11.0, 
        "f":"11" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"Comercio Electrónico" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":12.0, 
        "f":"12" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"Estrategias implant. NNTT para pymes" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":13.0, 
        "f":"13" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"Facebook" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":14.0, 
        "f":"14" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"LinkedIn" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":15.0, 
        "f":"15" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"NNTT para directivos de Pymes" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":16.0, 
        "f":"16" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"NNTT para RRHH" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":17.0, 
        "f":"17" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"Telemarketing" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":18.0, 
        "f":"18" 
       }, 
       { 
        "v":"NNTT Pymes" 
       }, 
       { 
        "v":"Twitter" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":19.0, 
        "f":"19" 
       }, 
       { 
        "v":"PRL y MA" 
       }, 
       { 
        "v":"Educ. para la igualdad de oportunid." 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":20.0, 
        "f":"20" 
       }, 
       { 
        "v":"PRL y MA" 
       }, 
       { 
        "v":"Fundament. adaptación LOPD en Pymes" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":21.0, 
        "f":"21" 
       }, 
       { 
        "v":"PRL y MA" 
       }, 
       { 
        "v":"Manipulador de alimentos" 
       } 
      ] 
     }, 
     { 
      "c":[ 
       { 
        "v":22.0, 
        "f":"22" 
       }, 
       { 
        "v":"PRL y MA" 
       }, 
       { 
        "v":"Prevención de Riesgos Laborales" 
       } 
      ] 
     } 
     ] 
    } 
}); 

以下のコードは、JSON(以前はURLから読み取ったもの)を配列に保存して、データの行だけを表示するために使用します。

var data = httpRequest.responseText; 
arrayDatos = data.split('{"c":'); 

for(var i = 1 ; i < arrayDatos.length; i++) 
{ 
    document.getElementById("body").innerHTML += arrayDatos[i] + '<br/>'; 
} 

答えて

1

JSONの文字列演算ですか?ご存じないかもしれませんが、JSONはJavaScript Object Notationの頭字語です。だから、基本的には、JavascriptオブジェクトのString表現を持っています。それを表現するネイティブオブジェクトに変換するのではなく、文字列操作を使用してそのオブジェクトを処理します。それはうまくいくかもしれませんが、維持するのが非効率的で難しくなります。だからここ

は、JSON表現からオブジェクトを復元するJSON.parse(data)を使用して、健全な代替物である:

var objectData = JSON.parse(data); 
var rowsArray = objectData.table.rows; 
for(var i = 0 ; i < rowsArray.length; i++) { 
    var currentRow = rowsArray[i] 
    var cellArray = currentRow.c; 
    for (var j = 0; j < cellArray.length; j++) { 
     var currentCell = cellArray[j]; 
     document.getElementById("body").innerHTML += currentCell.v + '<br/>'; 
    } 
} 

も各行がセルのアレイを有していることに注目してください。あなたの質問は最善の暗黙のうちに、私はあなたのコードが現在セル配列の周りに分割しているので、これはあなたの問題かもしれないと思います。

関連する問題