+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

estrarre dati json

  1. #1
    eurostar_italia non  in linea Scolaretto
    Domanda,qualcuno ha mai dovuto estrarre dati da un json ?
    io ho un json di questo tipo
    {"listReservationReport":[{"validationType":"PRESENTE","bookingId":"xxxxx","travelId":null,"travelSolutionId":null,"couponId":"xxxxxx","transportMeanName":"aereo","transportClassification":"az","transportMeanDate":"16-01-2020","couponServiceType":"Posto a sedere","materializationType":"NON MATERIALIZZATO","fila":"6","seat":"2A","pnrCode":"xxxxxx","departureLocationName":"NAPOLI capodichino","arrivalLocationName":"ROMA fiumicino","cpCode":"xxxxxxx","offerName":"Super Economy","serviceLevel":"2 Premium","amount":"109,90","adults":1,"teens":0,"alreadyPaied":"--","alreadyCached":"--","ci204":"PRESENTE","firstName":"xxxxxxxx","lastName":"xxxxxx","channelName":"Internet B2C","gender":"Non disponibile","saleSystem":"galileo","travellerInfo":null,"validation":null},],"validatorList":[{"firstName":"xxxxx","lastName":"xxxx","roleId":"USR","enterpriseRoleType":"CST"},{"firstName":"xxxx ","lastName":"xxxx ","roleId":"xxx","enterpriseRoleType":"CT"},{"firstName":"x","lastName":"xxxx ","roleId":"USR","enterpriseRoleType":"CPV"},{"firstName":"xxx","lastName":"xxx","roleId":"USR","enterpriseRoleType":"CT"}],"materializedStatus":[{"onboard":30,"absent":0,"none":1,"defect":0,"undo":0}],"notMaterializedStatus":[{"onboard":522,"absent":0,"none":110,"defect":0,"undo":0}]}
    
    dovrei caricare i dati in una matrice(nome,cognome,fila,posto,ecc.) tenendo conto che la lunghezza del json varia a seconda dei dati presenti (ovviamente i prenotati possono essere piu d'uno).
    ho cercato su google ma ho trovato una soluzione accettabile.
    c' chi parla di classi esterne e chi di System.Web.Script.Serialization
    qualcuno pu guidarmi meglio ?
    grazie

  2. #2
    Installa da VS la libreria Json di NewtonSoft e usala
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    eurostar_italia non  in linea Scolaretto
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Installa da VS la libreria Json di NewtonSoft e usala
    l'ho trovata e installata,ma non ho ben chiara la documentazione.
    ho aggiunto il riferimento alla libreria e sto usando questo codice.
    Dim percorsofinale As String
    Dim openfile As New OpenFileDialog
    Dim sLine As String
    If openfile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    percorsofinale = openfile.FileName
    Dim objReader As New IO.StreamReader(percorsofinale) 'path del file ed apertura
    sLine = objReader.ReadLine() 'leggi riga
    End If
    Dim account As json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of json)(sLine)
    MsgBox(account.firstName)
    End Sub
    
    come da manuale ho creato un altra classe
    Public Class json
    
    	Public Property firstName As String
    	Public Property lastName As String
    	Public Property CreatedDate As DateTime
    		Public Property Roles As IList(Of String)
    
    
    End Class
    
    sline ha correttamente caricato il json,eppure account nothing.

  4. #4
    A me funziona regolarmente ... in questo modo se tutto in una stringa (ti consiglio di chiamare la classe in modo adeguato)

        Public Class Person
            Public Email As String
            Public Active As Boolean
            Public CreatedDate As DateTime
            Public Roles As IList(Of String)
        End Class
    
        Sub Main()
            Dim sLine As String = "{'Email': 'james@example.com', 'Active': true, 'CreatedDate': '2013-01-20T00:00:00Z', 'Roles': ['User','Admin']}"
    
            Dim account As Person = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Person)(sLine)
            MsgBox(account.Email)
        End Sub
    
    Se carichi il json da file, questo non sempre in una linea e quindi ti consiglio di scrivere

        Public Class Person
            Public Email As String
            Public Active As Boolean
            Public CreatedDate As DateTime
            Public Roles As IList(Of String)
        End Class
    
        Sub Main()
            Dim account As Person = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Person)(File.ReadAllText(openfile.FileName))
            MsgBox(account.Email)
        End Sub
    
    Naturalmente devi implementare tutta la gestione di eventuali errori.
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    eurostar_italia non  in linea Scolaretto
    ti ringrazio per le dritte,in effetti non avevo pensato che caricando da file,non finisse tutto su una riga.infatti il codice da te suggerito non mi funziona ugualmente
    in quanto su piu righe.
    ho comunque tre domande :
    1) il json andrebbe in risposta ad una webrequest in questo caso mi basterebbe usare questo codice (dove sLine valorizzato con la webrequest) ?

    Dim account As Person = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Person)(sLine)
    
    2) non ho capito perch usa questo codice
            Dim sLine As String = "{'Email': 'james@example.com', 'Active': true, 'CreatedDate': '2013-01-20T00:00:00Z', 'Roles': ['User','Admin']}"
           MsgBox(account.Email)
        End Sub
    
    3) avendo il json piu valori (ovviamente nel mio caso i prenotati sono tanti),il carico nella matrice va inserito all'interno di un ciclo,ma lo spostamento nella lettura del valore successivo sul json come implementata ?
    grazie come sempre della guida
    Ultima modifica di eurostar_italia; 19-01-2020 21:32 

  6. #6
    Ti rispondo velocemente (il tempo non basta mai) con un piccolo esempio ...

            Dim JSONtxt As String = File.ReadAllText("c:\temp\prova.json")
            Dim persons As List(Of Person) = Newtonsoft.Json.JsonConvert.DeserializeObject(Of List(Of Person))(JSONtxt)
    
            For Each p As Person In persons
                Console.WriteLine(p.Email)
                Console.WriteLine(p.Active)
                Console.WriteLine(p.CreatedDate)
                For Each r As String In p.Roles
                    Console.WriteLine(r)
                Next
                Console.WriteLine()
            Next
    
    ℹ️ Leggi di pi su AntonioG ...

  7. #7
    eurostar_italia non  in linea Scolaretto
    col mio json il codice da te proposto non va,mi da questo errore :
    "Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[GFP.Person]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly"
    credo questo stia andando oltre le mie possibilit, per non riesco a capire dov' l'inghippo

    -al contrario col codice precedente legge correttamente il json(JSONtxt infatti valorizzato correttamente) ma account = nothing...
    Dim JSONtxt As String = File.ReadAllText("c:\temp\prova.json")
    Dim account As Person = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Person)(JSONtxt)
    MsgBox(account.firstName)
    
    Ultima modifica di eurostar_italia; 20-01-2020 17:13 

  8. #8
    eurostar_italia non  in linea Scolaretto
    credo il problema sia nel mio json...
    ho capito che su piu livelli,quello che non ho capito come entrarci dentro e scorrere il livello che mi interessa
    da quello che ho capito ha 4 livelli principali (token) e n livelli secondari sul token 0 ...(nel mio caso 615 token children)

  9. #9
    Non si capisce quale sia il tuo problema. Qual il vero file json da leggere? Posta un link da cui scaricarlo
    ℹ️ Leggi di pi su AntonioG ...

  10. #10
    eurostar_italia non  in linea Scolaretto
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Non si capisce quale sia il tuo problema. Qual il vero file json da leggere? Posta un link da cui scaricarlo
    voi cosa usate?

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Estrarre dati da server
    Da Manuale nel forum Visual Basic .Net
    Risposte: 19
    Ultimo Post: 31-01-2017, 18:29
  2. estrarre dati da una pagina web
    Da seby nel forum PHP
    Risposte: 5
    Ultimo Post: 21-02-2011, 13:13
  3. Estrarre dati da DB
    Da queen_live78 nel forum PHP
    Risposte: 12
    Ultimo Post: 14-01-2007, 12:58
  4. Estrarre dati
    Da VisitorsVBA nel forum Microsoft Word
    Risposte: 6
    Ultimo Post: 23-11-2006, 19:28
  5. Estrarre dati da una listview
    Da paco nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 02-07-2004, 18:10