Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我使用Task<;可观察收集<;类别>&燃气轮机;在Xamarin中,每当我使用Json反序列化程序转换它时,它都会给我错误_Xamarin_Observablecollection_Xamarin.uwp - Fatal编程技术网

当我使用Task<;可观察收集<;类别>&燃气轮机;在Xamarin中,每当我使用Json反序列化程序转换它时,它都会给我错误

当我使用Task<;可观察收集<;类别>&燃气轮机;在Xamarin中,每当我使用Json反序列化程序转换它时,它都会给我错误,xamarin,observablecollection,xamarin.uwp,Xamarin,Observablecollection,Xamarin.uwp,每当在Xamarin中导航页面时,我都会调用一个API,我使用Prism作为框架。这是我的密码 public override async void OnNavigatedTo(NavigationParameters parameters) { base.OnNavigatedTo(parameters); ObservableCollection<GetStudyDto> result = await GetStudyDetail(2)

每当在Xamarin中导航页面时,我都会调用一个API,我使用Prism作为框架。这是我的密码

 public override async void OnNavigatedTo(NavigationParameters parameters)
    {
        base.OnNavigatedTo(parameters);

        ObservableCollection<GetStudyDto> result = await GetStudyDetail(2);
        if (result != null)
        {
            Debug.WriteLine(result);
        }
    }
protected async Task<ObservableCollection<GetStudyDto>> GetStudyDetail(int studyId)
    {
            StudyDetail = await apiService.GetStudyById<ObservableCollection<GetStudyDto>>($"/Study/", studyId);
        return StudyDetail;
    }
public覆盖异步void OnNavigatedTo(NavigationParameters)
{
base.OnNavigatedTo(参数);
ObservableCollection结果=等待GetStudyDetail(2);
如果(结果!=null)
{
Debug.WriteLine(结果);
}
}
受保护的异步任务GetStudyDetail(int studyId)
{
studydeail=wait apiService.GetStudyById($“/Study/”,studyId);
返回研究详细信息;
}
每当我使用ObservableCollection绑定我的类时,它都会给我错误

无法将当前JSON对象(例如{“名称”:“值”})反序列化为类型“System.Collections.ObjectModel.ObservableCollection`1[CRCRevamp.Mobile.Models.Dto.GetStudyTo]”,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为可以反序列化的正常.NET类型(例如,不是integer之类的基元类型,也不是数组或列表之类的集合类型)

但是,每当我没有将我的类绑定到可观察的集合时,它就会工作得非常好

下面是来自API的JSON响应示例:


[JSON Object from API]

看起来JSON没有正确发布,但我怀疑问题在于JSON的结构是对象而不是数组
ObservableCollection
仅当JSON对应于数组时才起作用

为了避免(可能是)结构不良的JSON,您可以使用
字典
,然后调用
AsEnumerable
创建
IEnumerable
,然后将其转换为
ObservableCollection

var dict = JsonConvert.DeSerialize<Dictionary<string, MyClass>>(jsonString);
var collection = new ObservableCollection(dict.AsEnumerable());
var dict=JsonConvert.DeSerialize(jsonString);
var集合=新的ObservableCollection(dict.AsEnumerable());