Sử dụng phương pháp Api flurl.http
Tôi đang gọi một APi bằng cách sử dụng Flurl.http có chứa trường Giá trị và Văn bản. Tôi đang sử dụng api đó trong Bộ chọn!
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;
}
đây là json phản hồi api cung cấp
{"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)"}]
Tôi đang lấy dữ liệu chính xác và tôi cũng có thể tìm nạp Mục đã chọn nhưng vấn đề là tôi chỉ thêm trường văn bản nhưng tôi cũng cần quyền truy cập của Trường giá trị!
Ngay bây giờ Khi tôi phải chuyển giá trị đã chọn của menu thả xuống, tôi chỉ có văn bản và tôi cũng cần trường giá trị được liên kết với nó để tôi có thể sử dụng nó! Tôi sẽ chỉ hiển thị văn bản nhưng tôi cần quyền truy cập của nó!
Trả lời
như @Iria đã đề xuất, trước tiên hãy xác định một lớp mô hình cho dữ liệu của bạn
public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}
sau đó yêu cầu flurl trả về một lớp được đánh mạnh thay vì sử dụng động
var data = await url.GetJsonAsync<List<MyClass>>();
thì bạn có thể liên kết trực tiếp bộ chọn của mình với dữ liệu
ShiftPicker.ItemsSource = data;
Tôi sẽ làm như sau:
var results = await url.GetJsonListAsync();
var myClass = JsonSerializer.Deserialize<IEnumerable<MyClass>>(results);
Sau đó
public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}
trong myClass, bạn có một tập hợp các đối tượng có Giá trị và Văn bản, sau đó bạn có sự tương ứng giữa giá trị và Văn bản cho mỗi đối tượng