使用されるAPIflurl.httpメソッドを取得します
Aug 23 2020
ValueフィールドとTextフィールドを含むFlurl.httpを使用してAPiを呼び出しています。私はピッカーでそのAPIを使用しています!
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;
}
これは、APIが提供するjson応答です
{"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)"}]
データを正しく取得しており、選択したアイテムも取得できますが、テキストフィールドのみを追加したのに、値フィールドにもアクセスする必要があるという問題があります。
現在、ドロップダウンの選択した値を渡す必要がある場合、テキストしかなく、それに関連付けられた値フィールドも必要なので、それを使用できます。テキストのみを表示しますが、アクセスする必要があります。
回答
1 Jason Aug 23 2020 at 05:31
@Iriaが提案したように、最初にデータのモデルクラスを定義します
public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}
次に、動的を使用する代わりに、強く型付けされたクラスを返すようにflurlに指示します
var data = await url.GetJsonAsync<List<MyClass>>();
次に、ピッカーをデータに直接バインドできます
ShiftPicker.ItemsSource = data;
Iria Aug 23 2020 at 03:36
私は次のことをします:
var results = await url.GetJsonListAsync();
var myClass = JsonSerializer.Deserialize<IEnumerable<MyClass>>(results);
次に
public class MyClass{
public string Value{get;set;}
public string Text{get;set}
}
myClassには、値とテキストを持つオブジェクトのコレクションがあり、各オブジェクトの値とテキストの間の対応があります。