-
fetch json
Ciao a tutti, vi chiedo un aiuto, premetto che ho iniziato da poco ad utilizzare javascript, per cui chiedo venia in anticipo per le stupidate che dico e che dirò, detto questo vi chiedo una spiegazione, ho necessità di iterare in un file json come quello che vedete sotto; per ovvi motivi ho tagliato le informazioni contenute, e, a partire dalla chiave nodi, dove sono presenti le stesse chiavi con valori diversi, ho necessità di recuperare il loro valore di alcuni campi, (come se dovessi fare una select)per gestirli successivamente, mi areno perché riesco a fetchare il file json recuperare tutti i dati ma non riesco a recuperare quelli che mi interessano e selezionare gli stessi sull'intera colonna. Potete gentilmente darmi due dritte per cortesia?
Grazie in anticipo a tutti.
Codice:
{
"name1" : "B0421",
"time1" : " 12:00",
"time2" : "UTC + 0",
"wat" : 2.53,
"ins" : "1899",
"mon" : "",
"mit" : "",
"centro" : "899",
"l" : 0.000,
"lo" : 0.000,
"nodi" : [
{
"c" : 0,
"d" : 24,
"da" : 0.60771735492944,
"di" : -0.30007102648331,
"df" : 0.67776323625377,
"cN" : 0.60771735492944,
"cE" : -0.30007102648331,
"ct" : 0.67776323625377,
"dt" : null,
"cvrt" : null,
"dih" : 333.72134115113181,
"cuh" : 333.72134115113181,
"te" : 40.30000000000000
},
...
]
-
Per lavorare su un array, potresti usare map() e filter().
Metti che hai già recuperato i dati contenuti nel JSON...
Codice:
const risposta = await fetch('https://.../x.json')
const dati = await risposta.json()
Puoi lavorare su ciascuno dei "nodi" con map(), ad esempio estraendo alcuni dei campi
Codice:
const parametri = dati.nodi
.map(nodo => {
ampiezza: nodo.da,
insipienza: nodo.di,
formaggio: nodo.df,
])
console.log(parametri)
Se ti interessa filtrarli in qualche modo, concatena filter()
Codice:
const parametri = dati.nodi
.filter(nodo => nodo.d > 20)
.map(nodo => ... )
console.log(parametri)
-
Avevo provato map, ma da come lo hai scritto tu mi rendo contro di aver scritto una caz.. di codice. Grazie! Provo le tue indicazioni, ti posso ridisturbare nel caso?
Grazie molte intanto
-
Perdonami ma questa parte qui non mi è chiara.
Codice:
.map(nodo => {
ampiezza: nodo.da,
insipienza: nodo.di,
formaggio: nodo.df,
cioè per capirci da ampiezza : nodo.da,
Grazie ancora
-
map() prende come parametro una funzione. Nel mio esempio sopra, è una funzione che riceve un "nodo", e restituisce un nuovo oggetto che contiene solo tre campi. Potrebbe essere scritto anche così:
Codice:
function trasforma(nodo) {
return {
ampiezza: nodo.da,
insipienza: nodo.di,
formaggio: nodo.df,
}
}
const nuovo_array = nodi.map(trasforma)
Prendendo il "nodo" del tuo esempio
Codice:
const nodo = {
"c" : 0,
"d" : 24,
"da" : 0.60771735492944,
"di" : -0.30007102648331,
"df" : 0.67776323625377,
"cN" : 0.60771735492944,
"cE" : -0.30007102648331,
"ct" : 0.67776323625377,
"dt" : null,
"cvrt" : null,
"dih" : 333.72134115113181,
"cuh" : 333.72134115113181,
"te" : 40.30000000000000
}
console.log(trasforma(nodo));
Mostrerebbe nella console javascript
Codice:
{
"ampiezza" : 0.60771735492944,
"insipienza" : -0.30007102648331,
"formaggio" : 0.67776323625377,
}
Non sapendo cosa siano i "nodi" con cui lavori, ho dato ai campi dei nomi a caso :mrgreen:
Anche filter() prende come parametro una funzione, ma questa dovrebbe restituire true o false. Se il risultato è true, l'elemento viene restituito, se è false, viene filtrato ed ignorato.