Laden...

Wie kann ich Daten von RestSharp in Strings oder Integer umwandeln?

Erstellt von blizzard vor 3 Jahren Letzter Beitrag vor 3 Jahren 719 Views
B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren
Wie kann ich Daten von RestSharp in Strings oder Integer umwandeln?

Hallo Forum

Ich habe nach dem Vorschlag von MrSparkle RestSharp verwendet, um die JSON Dateien meiner WebAPI abzufragen.

Jedoch weiß ich nicht so recht wie ich einzelnen Content in Strings oder Integer konvertieren und ausgeben kann.


var result = output["id"];

Löst folgende Exection aus.

Fehlermeldung:
Ein Ausnahmefehler des Typs "System.Collections.Generic.KeyNotFoundException" ist in mscorlib.dll aufgetreten.
Der angegebene Schlüssel war nicht im Wörterbuch angegeben.

Diese sagt ja das id nicht gefunden werden konnte ich bin mir auch ganz sicher das da dieses data im weg steht 😉 denn wenn ich data statt id eingebe bekomme ich alle daten in der console angezeigt.

das ist der JSON code der verarbeitet werden soll


{
    "data": {
        "id": 1,
        "name": "Admin",
        "email": "admin@admin.com",
        "email_verified_at": null,
        "verified": 1,
        "verified_at": "11.10.2020 15:52:28",
        "verification_token": "",
        "is_activ": 0,
        "is_vip": 0,
        "is_ban": 0,
        "created_at": null,
        "updated_at": null,
        "deleted_at": null,
        "roles": [
            {
                "id": 1,
                "title": "Admin",
                "created_at": null,
                "updated_at": null,
                "deleted_at": null,
                "pivot": {
                    "user_id": 1,
                    "role_id": 1
                }
            }
        ]
    }
}

Was müsste ich mir diesbezüglich durchlesen? (Bevorzugt auf Deutsch) englisch ist auch kein Problem aber mein Übersetzer stockt etwas 😉

Des Weiteren würde ich zu meinem code gerne Verbesserungsvorschläge von euch hören 😃
was könnte man besser machen? Oder passt das so?

**
Daten aus der API Beziehen**


RestClient client = new RestClient("http://localhost:8000/");
            RestRequest request = new RestRequest("api/v1/users/1", Method.GET);
            request.AddParameter("Authorization", string.Format("Bearer " + "token"),ParameterType.HttpHeader);
            var response = client.Execute(request);
            
            var deserialize = new JsonDeserializer();
            var output = deserialize.Deserialize<Dictionary<string, string>>(response);
            var result = output["data"];

            if (response.IsSuccessful)
            {
                if (response.StatusCode.ToString() == "OK")
                {
                    Console.WriteLine(response.Content);
                    label1.Text = "200";

                    // Einzelne Daten aus der json holen. 

                }
               
            }

Dankeschon mal 😃

T
2.219 Beiträge seit 2008
vor 3 Jahren

Du könntest es ganz einfach lösen in dem du das Json auf ein sauberes Objekt deserialisieren lässt.
Für Sowas kannst du ganz einfach mit Newtonsoft.Json arbeiten.

Code Beispiele gibt es wie Sand am Meer dafür.
Dann musst du nur eine Klasse anlegen, mit den entsprechenden Eigenschaften.
Dann kannt der Json String ohne Probleme auf das Objekt gemappt werden, dann kannst du die Daten auch ohne Probleme direkt über die Eigenschaften auslesen.

Das Paket dazu kannst du dir einfach über NuGet ziehen und dann ist der Rest recht einfache programmatisch lösbar.

JSON.Net

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

ja daran dachte ich auch schon jedoch wenn ich im NuGet RestSharp.Newtonsoft.Json downloaden möchte zeit er mir an das diese version veraltet ist und nicht mehr gewartet wird.

ich war mir erlich gesagt nicht sicher ob RestSharp.Newtonsoft.Json oder Newtonsoft.Json installieren soll 😉

Jedoch was genau meinst du mit ("sauber") ein neues objekt anlegen ?

ich denke mit klasse meinst du in etwa soetwas ?



    class user
    {
        int id { get; set; }
        string name { get; set; }
    }


T
2.219 Beiträge seit 2008
vor 3 Jahren

Keine Ahnung was RestSharp überhaupt ist, nutzte ich nicht.
Ansonsten meine ich das NuGet Paket.

NuGet

Schau dir den Link oben in meinem Kommentar an.
Die Frage nach der Klasse beantworte ich lieber nicht 😃
Wenn dir das nicht klar ist, dann solltest du erst einmal die Grundlagen von C# und OOP nachlesen.

Nachtrag:
Kurz mal die Doku von RestSharp durchgeschaut.
Eigentlich müsstest du, wenn du Newtonsoft.Json installierst, auch alles haben.
Dann dürfte dein Client im Request durch Get<T> schon dein deserialisertes Objekt kriegen.
Aber auch hier, musst du erst einmal die Klasse anlegen und den Request abschicken.

RestSharp Doku

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 3 Jahren

xD achso nein xDD was eine klasse ist weiß ich schon ^^ auch wie man sie verwendet
was ich eigentlich damit fragen wollte ist, ich muss in diese klasse dann alle JSON abfragen reinschreiben und die dort dann deserialisierten und kann sie dann später mit user.id user.name ausgeben?

Meintest du das in etwa so? ^^

T
2.219 Beiträge seit 2008
vor 3 Jahren

Ja, schau dir den Link in meinem Nachtrag mal an.
Dort wird auch über Client und die Methode UseNewtonsoftJson() auch der Serialisierer eingestellt.

RestSharp JSON

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

5.657 Beiträge seit 2006
vor 3 Jahren

Schau dir doch bitte mal die Doku an, das ist jetzt das dritte Mal, daß dir ein Link dazu gepostet wurde.

Dort findest du Beispiele. So sieht es z.B. aus, wenn du eine Klasse hast, in die du den Rückgabewert vom Server deserialisieren möchtest:

var timeline = await client.GetAsync<HomeTimeline>(request, cancellationToken);

Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?, Punkt 1.1 Erst suchen und in die Doku schauen, dann posten

Wenn du etwas nicht verstehst, helfen wir gerne. Aber wir lesen dir nicht aus der Doku vor 😃

Weeks of programming can save you hours of planning