Metode Get Api flurl.http digunakan

Aug 23 2020

Saya memanggil APi menggunakan Flurl.http yang berisi bidang Nilai dan Teks. Saya menggunakan api itu di 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;

        }

ini adalah respon json yang disediakan api

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

Saya mendapatkan data dengan benar dan saya dapat mengambil Item yang dipilih juga tetapi masalahnya adalah saya hanya menambahkan bidang teks tetapi saya membutuhkan akses Bidang Nilai juga!

Saat ini Ketika saya harus melewati nilai dropdown yang dipilih, saya hanya memiliki teks dan saya perlu bidang nilai yang terkait dengannya juga sehingga saya dapat menggunakannya! Saya hanya akan menampilkan teks tetapi saya perlu mengaksesnya!

Jawaban

1 Jason Aug 23 2020 at 05:31

seperti yang disarankan @Iria, pertama-tama tentukan kelas model untuk data Anda

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

lalu beri tahu flurl untuk mengembalikan kelas yang diketik dengan kuat alih-alih menggunakan dynamic

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

lalu Anda dapat mengikat alat pilih Anda langsung ke data

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

Saya akan melakukan hal berikut:

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

Kemudian

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

di myClass Anda memiliki kumpulan objek yang memiliki Nilai dan Teks, kemudian Anda memiliki korespondensi antara nilai dan Teks untuk setiap objek