Facendo qualche prova con il componente da te segnalato, poniamo il caso di avere questo file .json:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Ogni oggetto json inizia con { (parentesi graffa sinistra) e finisce con } (parentesi graffa destra), e in Gambas รจ rappresentato da un oggetto Collection.
Ho provato l'interpretazione di quel file.json con il seguente codice (scritto in modo molto didattico):
Public Sub Main()
Dim coll1, coll2, coll3, coll4, coll5, coll6, coll7 As Collection
coll1 = jSON.Decode(File.Load("/tmp/file.json"), False)
coll2 = coll1["glossary"]
Print coll2["title"]
coll3 = coll2["GlossDiv"]
Print coll3["title"]
coll4 = coll3["GlossList"]
coll5 = coll4["GlossEntry"]
Print coll5["ID"]
Print coll5["SortAs"]
Print coll5["GlossTerm"]
Print coll5["Acronym"]
Print coll5["Abbrev"]
coll6 = coll5["GlossDef"]
Print coll6["para"]
Print coll6["GlossSeeAlso"][0]
Print coll6["GlossSeeAlso"][1]
coll7 = coll4["GlossEntry"]
Print coll7["GlossSee"]
End
ho scaricato l'esempio dello sviluppatore spagnolo, ho richiesto a open weather map la mia ID key che poi va messa nell'url per le richieste dei dati (altrimenti non funziona), cosi':
Public Sub ButtonMostrarTiempo_Click()
Dim informacioPaginaWeb As String
Dim ruta As String
ruta = "http://api.openweathermap.org/data/2.5/weather?appid=mettilatuaAPIkey&q=" & Replace(ComboBoxCiudad.Text, " ", "_")
'ruta = "http://api.openweathermap.org/data/2.5/weather?q=" & Replace(ComboBoxCiudad.Text, " ", "_")
ora inizio a studiare anche come mandare e ricevere informazioni da e con un server web :D
grazie per le dritte Vuott.
Buone feste :D
stop sperimentando un po' e sembra che ne stia venendo a capo ... ma uno dei problemi piu' grandi e0 che i comand json sono pieni di virgolette "
tipo:
{"jsonrpc":"2.0","method":"Player.PlayPause","params":{"playerid":1},"id":1}
come posso definirle in una stringa da usare alla bisogna?
ho provato cosi':
Public PlayPause As String = "{\"jsonrpc\":\"2.0\",\"method\":\"Player.PlayPause\",\"params\":{\"playerid\":1},\"id\":1}"
utilizzando il backslash come escape .. ma poi mi si porta dietro lo stesso backslash quando utilizzo l'url:
rotta = "http://" & TextBox_IP.Text & ":" & MaskBox_Port.Text & "/jsonrpc?request=" & kodi.PlayPause
mi ritorna una cosa del genere:
"http://192.168.1.17:80/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Player.PlayPause\",\"params\":{\"playerid\":1},\"id\":1}"
Vuott il problema e' che quando passo la stringa:
"http://192.168.1.17:80/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Player.PlayPause\",\"params\":{\"playerid\":1},\"id\":1}"
al codice che la invia via http al server web, questo non la interpreta bene, perche' si aspetta:
"http://192.168.1.17:80/jsonrpc?request={"jsonrpc":"2.0","method":"Player.PlayPause","params":{"playerid":1},"id":1}"
... voglio provare a sostituire i " con i ' e vedere se per il server web sono equivalenti.
Quote e' la soluzione
E' un'ottima soluzione, ma... forse la soluzione ce l'avevi proprio davanti agli occhi....
'tipica richiesta al player con kodi/xbmc:
'http://192.168.1.17/jsonrpc?request={%22jsonrpc%22:%20%222.0%22,%20%22id%22:%201,%20%22method%22:%20%22Playlist.GetPlaylists%22}
Mi fai sapere se quest'altra soluzione (senza utilizzare apposta funzione Gambas) va bene ?
Public PlayPause As String = "{\x22jsonrpc\x22:\x222.0\x22,\x22id\x22:1,\x22method\x22:\x22Playlist.GetPlaylists\x22}"
si funziona bene e restituisce informazioni correttaemnte:
{"id":1,"jsonrpc":"2.0","result":[{"playlistid":0,"type":"audio"},{"playlistid":1,"type":"video"},{"playlistid":2,"type":"picture"}]}