Holen Sie sich die verwendete Api flurl.http-Methode
Ich rufe eine API mit Flurl.http auf, die das Wert- und Textfeld enthält. Ich verwende diese API in Picker!
async void method()
{
string url = "http://xxx.xxx.xxx.xx/api/QMSRejection/GetShiftMaster";
IList<dynamic> list = await url.GetJsonListAsync();
var modelList = new List<string>();
foreach (var item in list)
{
modelList.Add(item.Text);
}
ShiftPicker.ItemsSource = modelList;
}
Dies ist die JSON-Antwort, die API bereitstellt
{"Value":"SF2017-1","Text":"General Shift Head Office"},{"Value":"SF2017-2","Text":"Shift-A-1 (Day)"},{"Value":"SF2017-3","Text":"Shift-B-1 (Night)"},{"Value":"SF2017-4","Text":"Shift-C"},{"Value":"SF2017-5","Text":"Shift-9.00AM-6.00PM"},{"Value":"SF201711","Text":"Morning Shift (6.00 Am-3.00Pm)"},{"Value":"SF20171203","Text":"Shift 6:30AM to 3:00PM"},{"Value":"SF2018-1","Text":"General Shift Factory-1"},{"Value":"SF20182","Text":"Shift 10AM to 8PM"},{"Value":"SF20191","Text":"General Shift Factory-2"},{"Value":"SF20192","Text":"Shift 7:00AM to 4:00PM"},{"Value":"SF20193","Text":"Shift-A-2 (Day)"},{"Value":"SF20194","Text":"Shift-B-2 (Night)"}]
Ich erhalte die Daten korrekt und kann auch ausgewählte Artikel abrufen, aber das Problem ist, dass ich nur ein Textfeld hinzugefügt habe, aber ich brauche auch Zugriff auf das Wertefeld!
Im Moment Wenn ich den ausgewählten Wert des Dropdown-Menüs übergeben muss, habe ich nur Text und ich brauche auch ein zugehöriges Wertfeld, damit ich es verwenden kann! Ich werde nur Text anzeigen, aber ich brauche Zugriff darauf!
Antworten
Definieren Sie, wie von @Iria vorgeschlagen, zunächst eine Modellklasse für Ihre Daten
public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}
dann weisen Sie flurl an, eine stark typisierte Klasse zurückzugeben, anstatt dynamische zu verwenden
var data = await url.GetJsonAsync<List<MyClass>>();
dann können Sie Ihren Picker direkt an Daten binden
ShiftPicker.ItemsSource = data;
Ich würde folgendes tun:
var results = await url.GetJsonListAsync();
var myClass = JsonSerializer.Deserialize<IEnumerable<MyClass>>(results);
Dann
public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}
In myClass haben Sie eine Sammlung von Objekten mit Wert und Text, dann haben Sie die Entsprechung zwischen Wert und Text für jedes Objekt