Kullanılan Api flurl.http yöntemini alın

Aug 23 2020

Değer ve Metin alanı içeren Flurl.http kullanarak bir APi arıyorum. Bu API'yi Seçici'de kullanıyorum!

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;

        }

bu api'nin sağladığı json yanıtıdır

{"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)"}]

Verileri doğru bir şekilde alıyorum ve seçilen Öğeyi de getirebiliyorum, ancak sorun şu ki, yalnızca metin alanı ekledim, ancak Değer Alanına da erişmem gerekiyor!

Şu anda, seçili açılır menü değerini geçmem gerektiğinde, yalnızca metne sahibim ve onunla ilişkili değer alanına da ihtiyacım var, böylece onu kullanabilirim! Sadece metni göstereceğim ama ona erişmem gerekiyor!

Yanıtlar

1 Jason Aug 23 2020 at 05:31

@Iria'nın önerdiği gibi, önce verileriniz için bir model sınıfı tanımlayın

public class MyClass{
  public string Value{get;set;}
  public string Text{get;set}
}

sonra flurl'a dinamik kullanmak yerine türü kesin belirlenmiş bir sınıf döndürmesini söyleyin

var data = await url.GetJsonAsync<List<MyClass>>();

daha sonra seçicinizi doğrudan verilere bağlayabilirsiniz

ShiftPicker.ItemsSource = data;
Iria Aug 23 2020 at 03:36

Ben şunu yapardım:

var results = await url.GetJsonListAsync();
var myClass =  JsonSerializer.Deserialize<IEnumerable<MyClass>>(results);

Sonra

public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}

myClass'da, Değer ve Metin içeren bir nesne koleksiyonunuz var, ardından her nesne için değer ve Metin arasında uygunluk var