如何在解决方案Windows 10中读取文件json?

时间:2015-08-23 20:06:00

标签: c# json windows-phone-8.1 windows-10

我正在尝试在解决方案中读取文件json,但是无法正常工作。

此文件

File Json

这是我的代码

public static async Task<IEnumerable<DtoTemas>> ListarTemas()
            {
                string jsonResult = string.Empty;

                try
                {
                    string filename = "TemasApi.json";
                    var pasta = Windows.ApplicationModel.Package.Current.InstalledLocation;

                    StorageFile file = await pasta.GetFileAsync(filename);                

                    jsonResult = await StorageFileHelper.StorageFileToTextAsync(file);

                }
                catch (Exception ex)
                {
                    throw ex;
                }


                return Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<DtoTemas>>(jsonResult);
            }     

当应用程序运行时,它会加载文件

File Json Read

但它不是对象的序列化器

Error

1 个答案:

答案 0 :(得分:1)

您需要一个包装器模型来匹配您要反序列化的JSON结构:

#container

然后反序列化为此模型:

public class MyModel
{
    public DtoTemas[] DtoTemas { get; set; }
}

原因是因为你的JSON并不代表你试图反序列化的var model = Newtonsoft.Json.JsonConvert.DeserializeObject<MyModel>(jsonResult); return model.DtoTemas; ,而是一个有一个名为IEnumerable<DtoTemas>的属性的对象代表你的集合正在寻找。

如果你想要这个:

DtoTemas

那么你的文件必须如下所示:

JsonConvert.DeserializeObject<IEnumerable<DtoTemas>>(jsonResult);