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

how read file json in the solution Windows 10?

我正在尝试读取解决方案中的文件 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);
            }     

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

但它不是对象的序列化器

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

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

然后反序列化到这个模型:

var model = Newtonsoft.Json.JsonConvert.DeserializeObject<MyModel>(jsonResult);
return model.DtoTemas;

原因是因为您的 JSON 并不代表您尝试反序列化的 IEnumerable<DtoTemas> 而是一个具有 属性 的对象 DtoTemas 表示您要查找的集合。

如果你想让这个工作:

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

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

[
    {
        "Id": "1",
        "Nome": "Bing",
        "NomeBuscaNaApi": "",
        "NomeResource": "Bing",
    },
    {
        "Id": "2",
        "Nome": "Personalizado",
        "NomeBuscaNaApi": "",
        "NomeResource": "Personalizado",
    },
    ...
]