Xamarin.forms 获取使用的Api flurl.http方法

Xamarin.forms 获取使用的Api flurl.http方法,xamarin.forms,Xamarin.forms,我正在使用Flurl.http调用一个APi,它包含值和文本字段。 我正在Picker中使用该api async void method() { string url = "http://xxx.xxx.xxx.xx/api/QMSRejection/GetShiftMaster"; IList<dynamic> list = await url.GetJsonListAsync();

我正在使用Flurl.http调用一个APi,它包含值和文本字段。 我正在Picker中使用该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;

        }
我得到正确的数据,我能够获取选定的项目以及,但问题是,我只添加了文本字段,但我需要访问值字段以及

现在,当我必须传递下拉列表的选定值时,我只有文本,我也需要与之关联的值字段,以便我可以使用它!
我将只显示文本,但我需要访问它

我将执行以下操作:

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

在myClass中,您有一组具有值和文本的对象,然后您有每个对象的值和文本之间的对应关系

,正如@Iria建议的那样,首先为您的数据定义一个模型类

public class MyClass{
  public string Value{get;set;}
  public string Text{get;set}
}
然后告诉flurl返回一个强类型类,而不是使用动态

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

它给了我一个错误“不能从system.collections.generic.IList转换到Newtonsoft.JsonReader”而不是使用动态,使用我对MyClass的定义,顺便说一句,阅读以下内容:var results=wait url.GetJsonListAsync();var myClass=JsonSerializer.Deserialize(结果);我用过这个,就像你提到的,但它给出了我之前提到的错误!您需要将原始json字符串传递给Deserialize()-看起来您正在GetJSonListSync()内部进行其他处理GetJSonListSync的返回类型是什么@Iria假设它是一个字符串,但显然它不是,我如何才能解决它!在下拉列表中,它显示了如下内容:ProjectName.Views.FormName+Myclass。对于所有显示这一点的记录,因为我有13行,所以我收到13个这样的值!如果您阅读了,您就会知道您需要设置ItemDisplayBinding属性yUp ItemDisplayBinding适合我!谢谢你太棒了!
public class MyClass{
  public string Value{get;set;}
  public string Text{get;set}
}
var data = await url.GetJsonAsync<List<MyClass>>();
ShiftPicker.ItemsSource = data;