2017-02-08 4 views
0

私はこのデータをcsvファイルから取得しています。これはjqueryを使用した依存ドロップダウンで使用する必要があります。私は既に私がコード化したものについて受け取ったデータを入れ子にすることが可能かどうかわかりません。jqueryを使ってJsonデータを入れ子にします

CSVファイル

Banco Tarjeta Cuotas Medio_Pago Coeficiente TEA  CFT 
Santander Visa 1 modulodepago2 1  0.00% 0.00% 
Santander Visa 1  nps  1.0262 18.56% 22.84% 
Frances Visa 1 modulodepago2 1   0.00% 0.00% 
Frances Master 2  nps  1.0262 18.56% 22.84% 

私のJSONデータは、私が巣できる方法があります。この

[{"banco":"Santander","tarjeta":"Visa","cuotas":"1","medio_pago":"modulodepago2", 
"coeficiente":"1","tea":"0.00%","cft":"0.00%"}, 
{"banco":"Santander","tarjeta":"Visa","cuotas":"1","medio_pago":"nps", 
"coeficiente":"1.0262","tea":"18.56%","cft":"22.84%"} ... 
    etc... 

のように来て(一意の名前とIDを追加+)このように、このJSONデータ?

var myJson = { 
    "banco": [ 
     { 
      "name": "Santander", 
      "id": "Santander", 
      "tarjeta": [ 
       { 
        "name": "Visa", 
        "id": "SantanderVisa", 
        "cuotas": [ 
         { 
          "name": "1", 
          "id": "SantanderVisa1", 
          "medio_pago": "modulodepago2" 
          "coeficiente": "1", 
          "tea": "0.00%", 
          "cft": "0.00%", 
         }, 
         { 
          "name": "1", 
          "id": "SantanderVisa2", 
          "medio_pago": "nps" 
          "coeficiente": "1.0262", 
          "tea": "18.56%", 
          "cft": "22.84%", 
         } 
        ] 
       } 
      ] 
     }, 
     { 
      "name": "Frances", 
      "id": "Frances", 
      "tarjeta": [ 
       { 
        "name": "Visa", 
        "id": "FrancesVisa", 
        "cuotas": [ 
         { 
          "name": "1", 
          "id": "FrancesVisa1", 
          "medio_pago": "modulodepago2" 
          "coeficiente": "1", 
          "tea": "0.00%", 
          "cft": "0.00%", 
         } 
        ] 
       }, 
       { 
        "name": "Master", 
        "id": "FrancesMaster", 
        "cuotas": [ 
         { 
          "name": "2", 
          "id": "FrancesMaster2", 
          "medio_pago": "nps" 
          "coeficiente": "1.0262", 
          "tea": "18.56%", 
          "cft": "22.84%", 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 
+0

それは非常に可能です。小さくても完全なサンプルを共有できますか? csvまたは完全なjsonデータの場合は –

+0

? – Santiago

+0

オブジェクトを並べ替えることができます:http://stackoverflow.com/questions/1069666/sorting-javascript-object-by-property-value – ntgCleaner

答えて

1

キーでグループ化する必要があります。これを行う簡単な方法は、またはUnderscore.jsを使用することです。

私はPapa Parseを使用して、CSVデータをJSONに変換しました。

var csvData = $('#csv-data').text().trim(); 
 
var jsonData = Papa.parse(csvData, { delimiter:',', header:true }).data; 
 

 
var transformedJson = { 
 
    banco : _.chain(jsonData) 
 
    .groupBy('Banco') 
 
    .toPairs() 
 
    .map(banco => { 
 
    return { 
 
     name : banco[0], 
 
     id: banco[0], 
 
     tarjeta : _.chain(banco[1]) 
 
     .groupBy('Tarjeta') 
 
     .toPairs() 
 
     .map(tarjeta => { 
 
     return { 
 
      name: tarjeta[0], 
 
      id: banco[0] + tarjeta[0], 
 
      cuotas: _.map(tarjeta[1], cuota => { 
 
      return { 
 
       name: cuota['Cuotas'], 
 
       id: banco[0] + tarjeta[0] + cuota['Cuotas'], 
 
       medio_pago: cuota['Medio_Pago'], 
 
       coeficiente: cuota['Coeficiente'], 
 
       tea: cuota['TEA'], 
 
       cft: cuota['CFT'] 
 
      } 
 
      }) 
 
     }; 
 
     }) 
 
    } 
 
    }).value() 
 
} 
 

 
console.log(JSON.stringify(transformedJson, null, 2));
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.1.4/papaparse.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 
 
<textarea id="csv-data" style="display:none" rows="5" cols="72"> 
 
Banco,Tarjeta,Cuotas,Medio_Pago,Coeficiente,TEA,CFT 
 
Santander,Visa,1,modulodepago2,1,0.00%,0.00% 
 
Santander,Visa,1,nps,1.0262,18.56%,22.84% 
 
Frances,Visa,1,modulodepago2,1,0.00%,0.00% 
 
Frances,Master,2,nps,1.0262,18.56%,22.84% 
 
</textarea>

1

は、あなたが他の人のためのすべてのmedio_pagoは、あなただけのオブジェクト名を使用するオブジェクトを取得し、この ような何かを試してみてください。 私はそれをテストしていませんが、これはあなたのために動作すると確信しています。

var Json = ... 

$.each(Json, function(i, item) { 
    alert(myJson[i].banco.tarjeta.cuotas.medio_pago); 
}); 
+0

Uncaught TypeError:[{"banco": "Otrans bancos o tarjetas"、 "tarjeta": "Cencosud"、 "cuotas": "1"、 "medio_pago"で '長さ'を検索するために ' "0.00%"、 "cft": "0.00%"}、{"banco": "Otros bancos o tarjetas"、 "tarjeta": "Cencosud": "mercadopago_standard"、 "coeficiente" 、 "cuotas": "6"、 "medio_pago": "mercadopago_standard"、 "coeficiente": "1"、 "tea": "0.00%"、 "cft": "0.00%"} – Santiago

関連する問題