HTTP GET och PUT med visual studio 2022

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
schnilsch
Inlägg: 63
Blev medlem: 11 juni 2014, 18:14:16

Re: HTTP GET och PUT med visual studio 2022

Inlägg av schnilsch »

Precis, du ska deserializa json till klasser.

Finns sidor på nätet för att skapa klasser från json te. x. jsonutils.com.

Kan dock bli lite konstigt då hue verkar ha ett korkat format...

Om du googlar "deserialize hue" så hittar du åtminstone info hur man fixar det i c#.
FormerMazda
Inlägg: 5588
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: HTTP GET och PUT med visual studio 2022

Inlägg av FormerMazda »

Hmm.. Så man skapar en Class med variabler som motsvarar innehållet i datat.
Sen kör man DeserializeObject och datat stoppas i objekten i klassen.
Det lossnar lite hur tanken är, hur jag sen ändå ska bygga ihop det, och den kunna hämta visst värde från visst ID är inte alls klart. Än. :)
davidi
Inlägg: 380
Blev medlem: 13 oktober 2011, 16:45:38
Ort: Ekerö

Re: HTTP GET och PUT med visual studio 2022

Inlägg av davidi »

Alternativt så stoppar du in datat i Parse() som finns i klasserna JObject och JArray.
FormerMazda
Inlägg: 5588
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: HTTP GET och PUT med visual studio 2022

Inlägg av FormerMazda »

Försöker få en sak i taget att funka. :)

Skapade ett par klasser efter lite googling på hur folk löst det, enligt schnilsch tips.
Hittade lite C# exempel, översatte detta och byggde två klasser, en huvudklass som tar in den andra klassen i sig? Som en array i en array?

Kod: Markera allt

    Public Class State
        Public Property [On] As Boolean
        Public Property Bri As Integer
        Public Property Hue As Integer
        Public Property Sat As Integer
        Public Property Effect As String
        Public Property XY As List(Of Double)
        Public Property Ct As Integer
        Public Property Alert As String
        Public Property Colormode As String
        Public Property Reachable As Boolean
    End Class
    
    Public Class RootObject
        Public Property State As State
        Public Property Type As String
        Public Property Name As String
        Public Property Modelid As String
        Public Property Manufacturername As String
        Public Property Uniqueid As String
        Public Property Swversion As String
    End Class
Sen försöker jag få i data i detta:

Kod: Markera allt

    Public Shared Sub makemiclasses()
        Dim json As String = New System.Net.WebClient().DownloadString("http://192.168.1.233/api/Cby9pv0vPF9WM92Cu-1n2JphJnK1ghfoC-GIwjV9/lights/")
        Dim tmp As RootObject = JsonConvert.DeserializeObject(Of RootObject)(json)
        Form1.Label1.Text = tmp.ToString()
    End Sub        
Det startar och är körbart, men jag tror inte det går i nån data i variablerna?
Skärmbild 2022-11-17 202020.png
"Nothing" verkar ju inte så hoppfullt..
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
schnilsch
Inlägg: 63
Blev medlem: 11 juni 2014, 18:14:16

Re: HTTP GET och PUT med visual studio 2022

Inlägg av schnilsch »

Du ska deserialisera det som en dictionary vars key är en string och value är ett RootObject.
FormerMazda
Inlägg: 5588
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: HTTP GET och PUT med visual studio 2022

Inlägg av FormerMazda »

Man ska inte sitta sent och koda, särskilt inte när man jobbar med det på dagtid också i helt andra språk.. :D

Men jag läste det du skrev schnilsch, och kikade igen på min kod.
Sen ser jag att det exempel jag tittat på gör ju det du säger, och inte det jag gjorde.
Så när jag gjorde som exemplet så funkar det! Tro´t eller ej!

Kod: Markera allt

Dim a = JsonConvert.DeserializeObject(Of Dictionary(Of String, RootObject))(json)
Och resultatet:
Namnlös.png
Kul! :D

Nu ska jag lära mig använda datan. Men det blir sen, fikat är slut nu.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
FormerMazda
Inlägg: 5588
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: HTTP GET och PUT med visual studio 2022

Inlägg av FormerMazda »

Har inte pillat några mängder med detta idag.

Men, i mina klasser RootObject och state sätts en variabeldefinition upp. Den är och kommer alltid vara tom på data.

Sen i en funktion så kan man sätta upp ett dataset, med hjälp av definitionen?
Detta dataset gäller bara i den Sub man skapat datasetet?

Jag får oavsett inte tag i nån data i detta dataset. Har testat lite olika saker, men varje förslag är ju skrivit för sitt exempel och det finns ju en miljard attribut och grejer att fylla i.
Så det här var inte lika enkelt som jag först trodde. :)
schnilsch
Inlägg: 63
Blev medlem: 11 juni 2014, 18:14:16

Re: HTTP GET och PUT med visual studio 2022

Inlägg av schnilsch »

Du får väl deklarera variabeln utanför suben i klassen eller vad det nu heter. Var ett bra tag sedan jag höll på med vb själv...
Då kommer du ju åt datan utanför efter den är hämtad.

Eller missförstod jag var du menade?
FormerMazda
Inlägg: 5588
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: HTTP GET och PUT med visual studio 2022

Inlägg av FormerMazda »

Mitt inlägg är inte jättetydligt, så missförstånd är inte omöjligt. :)

Men du svarar ändå på frågan om var variabeln lever och hur det funkar.
I och med att om jag deklarerar den utanför subben/klassen så blir den tillgänglig överallt sen. Det besvarar ju just det.

Sen har jag fortfarande problem att helt enkelt läsa ut vad tillexempel värdet på "Hue" är till lampan med ID 15.
Eller hur många ID det ens finns, och vad dom är.
Sånna saker. Men det googlas friskt när tid finns, så jag kanske hittar det snart.
schnilsch
Inlägg: 63
Blev medlem: 11 juni 2014, 18:14:16

Re: HTTP GET och PUT med visual studio 2022

Inlägg av schnilsch »

Du kan ju använda For Each KeyValuePair loop för att gå igenom alla du får ut.

dict.Item("15").State.Hue borde funka för att komma åt hue för lampa 15.
FormerMazda
Inlägg: 5588
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: HTTP GET och PUT med visual studio 2022

Inlägg av FormerMazda »

Ursäkta sent svar, men det är mycket nu..

Form1.TextBox1.Text = a.Item("5").State.Hue
Funkade klokrent! :)

Du verkar kunna din VB schnislch!
schnilsch
Inlägg: 63
Blev medlem: 11 juni 2014, 18:14:16

Re: HTTP GET och PUT med visual studio 2022

Inlägg av schnilsch »

Nä absolut inte. Håller på med C#.
Men på flera punkter så funkar det likadant, alternativt heter typ samma och då är det väldigt smidigt att googla :)
Skriv svar