Ich arbeite an Windows Phone 8.1-Anwendung. Ich arbeite mit der REST-API und die API gibt mir JSON-Daten zurück. Ich möchte eine Methode so erstellen, dass jedes Mal, wenn ich die API aufrufen, ich nur den Typ der Klasse, auf der es als Parameter deserialisiert werden soll, und ich die deserialisierten Daten in ein Objekt dieses Modells abrufen. Meine aktuellen Code sieht wie folgt aus:Deserialize JSON in verschiedene Klassen mit Reflection
public static async Task GetAPIData(Type referanceModel, string serviceUrl)
{
HttpClient client = new HttpClient();
var responce = await client.GetAsync(new Uri(serviceUrl));
JArray arr = JArray.Parse(await response.Content.ReadAsStringAsync());
foreach (JObject obj in arr.Children<JObject>())
{
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.NullValueHandling = NullValueHandling.Ignore;
settings.MissingMemberHandling = MissingMemberHandling.Ignore;
var rcvdData = JsonConvert.DeserializeObject<referanceModel>(obj.ToString(), settings);
//var method = typeof(JsonConvert).GetTypeInfo().GetDeclaredMethods("DeserializeObject").ToList()[5].MakeGenericMethod(ReferanceModel);
//var rcvd = method.Invoke(null, new object[] { obj.ToString(), settings });
}
}
Der obige Code zeigt mir den Fehler, dass referanceModel eine Variable ist. Ich habe den kommentierten Code auch ausprobiert, aber es funktioniert auch nicht.
Die zwei Klassen sind: AllvehData und AllDevicesData. Beiden Klassen sind in einer Singleton-Klasse genannt ThisUserClass mit der Instanz von thisuser
public class AllVehData
{
public string Colour { get; set; }
public string Make { get; set; }
public string model { get; set; }
public string Year { get; set; }
}
public class AllDevicesData
{
bool has_tracking_device { get; set; }
int drive_type_name_string_id { get; set; }
public int vehicle_status { get; set; }
public int cargo_capacity { get; set; }
public int fuel_capacity { get; set; }
}
ich viel über das Thema gesucht und gefunden this aber nicht verstehen. Ich brauche Hilfe.
@BozhdarStoinev Könnten Sie mir bitte sagen, wie würde ich die Methode aufrufen. –
Folgen Sie einfach dem Beispiel ... Welches Problem haben Sie? –
Ich habe Ihren Code in den Json-Teil eingefügt. Das Problem ist, dass der Wert nicht in rcvdData aktualisiert wird. Das rcvdData wird ein Objekt der AllVehData-Klasse mit allen Nullwerten. –