C# einzelne Daten von api auslesen und in string umwanden?
Hallo liebe Nutzer,
Ich wollte mal fragen ob jemand vielleicht weiß wie mann die raw Ausgabe von einer api in einzelne strings umwandelt beispiel:
{"query": "https://linkvertise . com/123/blabla?o=sharing", "destination": "https://www.mediafire . com/download/187istkuhlkappa", "cache_ttl": 102992, "success": true, "plugin": "cache", "time_ms": 0}
Aus dieser api Ausgabe würde ich gerne folgende Daten entnehmen:
Den original linkvertise link
Den Mediafire aka bypassed link
Und die ms wie lange es gedauert hat.
Ich wäre euch sehr dankbar wenn ihr helfen könntet.
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Technik, programmieren
Der String ist im JSON-Format. Das heißt, du kannst ihn zu einem Objekt deserialisieren. Lies hier, wie das geht.
Zuerst musst du erstmal das Newtonsoft.Json package installieren denn damit ist es wesentlich leichter einen JSON-String zu bearbeiten.
Nachdem du das erledigt hast empfehle ich dir die Seite json2csharp dort hast du die möglichkeit einen JSON-String in eine C# Klasse zu konvertieren.
Danach kannst du ganz beliebig mit deinem JSON-Input arbeiten und dir einzeln die Daten auslesen.
Ein beispiel für deinen string wäre folgendes:
using Newtonsoft.Json;
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//Du musst natürlich hierbei die links wieder korrigieren
string jsonResponse = "{\"query\": \"https://linkvertise . com/123/blabla?o=sharing\", \"destination\": \"https://www.mediafire . com/download/187istkuhlkappa\", \"cache_ttl\": 102992, \"success\": true, \"plugin\": \"cache\", \"time_ms\": 0}";
APIRoot deserializedObj = JsonConvert.DeserializeObject<APIRoot>(jsonResponse);
Console.WriteLine("Ursprung: {0}", deserializedObj.query);
Console.WriteLine("Ziel: {0}", deserializedObj.destination);
Console.ReadKey();
}
}
public class APIRoot
{
public string query { get; set; }
public string destination { get; set; }
public int cache_ttl { get; set; }
public bool success { get; set; }
public string plugin { get; set; }
public int time_ms { get; set; }
}
}
Der output wäre hierbei folgender:
Ursprung: https://linkvertise . com/123/blabla?o=sharing
Ziel: https://www.mediafire . com/download/187istkuhlkappa
Woher ich das weiß:Berufserfahrung
Edit: Habe jetzt erst gelesen das du auch die ms haben wolltest.
Das geht ganz einfach hiermit:
Console.WriteLine("MS: {0}ms", deserializedObj.time_ms);
Einfach bei den anderen beiden mit drunter packen :)
hey, vielen dank für deine andwort. könntest du mir dein discord geben weil ich habe noch ein paar fragen wenn es ok wäre.