ciao raga
devo estrarre dei dati da una stringa json in base ad alcuni parametri tipo:
per eta nome cognome e altezza
per professione nome cognome e citta
[{"digits":4,"eta":25,"altezza":175,"nome":mario,"cognome":"cianci","citta":roma,"professione":impiegato},{"digits":4,"eta":36,"altezza":168,"nome":alessandro,"cognome":"borghi","citta":perugia,"professione":avvocato},{"digits":2,"eta":31,"altezza":172,"nome":rosanna,"cognome":"Giandini","citta":pescara,"professione":medico},{"digits":3,"eta":24,"altezza":179,"nome":matteo,"cognome":"cervini","citta":bari,"professione":studente},{"digits":2,"eta":47,"altezza":174,"nome":vincenzo,"cognome":"giannotti","citta":napoli,"professione":operaio}]
ho provato con
Dim srtjson As String
Dim coljson As Variant
Dim Nome As String
Dim Cognome As String
Dim eta as String
Dim Citta as String
Dim i as Integer
coljson = JSON.Decode(srtjson, True)
For i = 0 To colJson.count - 1
nome = coljson[x]["eta"] ["31"]
cognome coljson[x]["eta"] ["31"]
Next
va in errore
Io di json ne capisco poco, ma sembra che il tuo file sia parecchio incasinato (nomi non quotati) se provi così si carica.
Prima copi i dati così in un file di testo e lo nomini test.json:
{
"utenti": [
{
"digits": "4",
"eta": 25,
"altezza": 175,
"nome": "mario",
"cognome":"cianci",
"citta": "roma",
"professione": "impiegato"
},
{"digits": "4",
"eta": 36,
"altezza": 168,
"nome": "alessandro",
"cognome": "borghi",
"citta": "perugia",
"professione": "avvocato"
},
{
"digits": "2",
"eta": 31,
"altezza": 172,
"nome": "rosanna",
"cognome": "Giandini",
"citta": "pescara",
"professione": "medico"
},
{
"digits": "3",
"eta": 24,
"altezza": 179,
"nome": "matteo",
"cognome":"cervini",
"citta":"bari",
"professione":"studente"
},
{
"digits": "5",
"eta": 47,
"altezza": 174,
"nome": "vincenzo",
"cognome": "giannotti",
"citta": "napoli",
"professione": "operaio"
}
]
}
quindi lo carichi così.
Dim hColl As Collection = JSON.Decode(File.Load("../test.json"))
Ti passo un codice che ho scaricato tempo fa forse dalla Spagna (serve una gridview):
Public Sub Form_Open()
Dim hColl As Collection = JSON.Decode(File.Load("../test.json"))
Dim siCount, siRow, siCol As Short
Dim sKey As Variant
GridView1.Columns.count = 7
For Each sKey In hColl["utenti"][0]
GridView1.Columns[siCol].Title = UCase(hColl["utenti"][0].Key)
Inc siCol
Next
For siCount = 0 To hColl["utenti"].max
Inc GridView1.rows.count
GridView1[siCount, 0].Text = hColl["utenti"][siCount]["digits"]
GridView1[siCount, 1].Text = hColl["utenti"][siCount]["eta"]
GridView1[siCount, 2].Text = hColl["utenti"][siCount]["altezza"]
GridView1[siCount, 3].Text = hColl["utenti"][siCount]["nome"]
GridView1[siCount, 4].Text = hColl["utenti"][siCount]["cognome"]
GridView1[siCount, 5].Text = hColl["utenti"][siCount]["citta"]
GridView1[siCount, 6].Text = hColl["utenti"][siCount]["professione"]
Next
GridView1.Columns.Width = -1
End
Ciao Gian
grazie dell'aiuto io di json sono completamente a digiuno.
i nomi non sono quotati per colpa mia, per la privacy ho cambiato nomi e cognomi originali e nel farlo ho cancellato le ".
Nel file originale sono quotati.
interessante la GridView, potrei scaricare in un array.
mi sfugge questo passaggio, come trasformare il mio file a cosi:
{
"utenti": [
{
"digits": "4",
"eta": 25,
"altezza": 175,
"nome": "mario",
"cognome":"cianci",
"citta": "roma",
"professione": "impiegato"
},
{"digits": "4",
"eta": 36,
"altezza": 168,
"nome": "alessandro",
"cognome": "borghi",
"citta": "perugia",
"professione": "avvocato"
},
{
"digits": "2",
"eta": 31,
"altezza": 172,
"nome": "rosanna",
"cognome": "Giandini",
"citta": "pescara",
"professione": "medico"
},
{
"digits": "3",
"eta": 24,
"altezza": 179,
"nome": "matteo",
"cognome":"cervini",
"citta":"bari",
"professione":"studente"
},
{
"digits": "5",
"eta": 47,
"altezza": 174,
"nome": "vincenzo",
"cognome": "giannotti",
"citta": "napoli",
"professione": "operaio"
}
]
}
utenti e le { le posso aggiungere io ma per trasformarlo in righe? esiste una funzione di json oppure devo farlo io da codice?
Grazie Gian
Risolto
per ora scarico nella griglia, ho fatto una modifica ed evito di fare il file.
posto qui il codice se dovesse servire ad altri
Dim srtjson As String
Dim hColl As Collection
Dim siCount, siRow, siCol As Short
Dim sKey As Variant
Dim UrlDati As String
UrlDati = TextBox1.text
Shell "curl '" & UrlDati & "'" To srtjson
srtjson = "{" & Chr(34) & "utenti" & Chr(34) & ":" & srtjson & "}"
GridView1.Header = GridView1.Horizontal
GridView1.Columns.count = 7
hColl = JSON.Decode(srtjson)
GridView1.Clear
For Each sKey In hColl["utenti"][0]
GridView1.Columns[siCol].title = UCase(hColl["utenti"][0].Key)
Inc siCol
Next
For siCount = 0 To hColl["utenti"].max
Inc GridView1.rows.count
GridView1[siCount, 0].Text = hColl["utenti"][siCount]["digits"]
GridView1[siCount, 1].Text = hColl["utenti"][siCount]["eta"]
GridView1[siCount, 2].Text = hColl["utenti"][siCount]["altezza"]
GridView1[siCount, 3].Text = hColl["utenti"][siCount]["nome"]
GridView1[siCount, 4].Text = hColl["utenti"][siCount]["cognome"]
GridView1[siCount, 5].Text = hColl["utenti"][siCount]["citta"]
GridView1[siCount, 6].Text = hColl["utenti"][siCount]["professione"]
Next
GridView1.Columns.Width = -1