将 JSON 文件从磁盘直接反序列化为对象

Nic*_*las 0 .net c# json json.net async-await

我正在尝试将本地磁盘中的 JSON 文件反序列化为对象。我有以下内容,但这似乎仅在从网络下载时才有效:

var client = new HttpClient();
using (var s = await client.GetStreamAsync(filePath))
using (var sr = new StreamReader(s))
using (var jr = new JsonTextReader(sr))
{
    var js = new JsonSerializer();
    return js.Deserialize<MyObject>(jr);
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试找到一种方法来做到这一点,而无需先将其读入字符串中。

Emd*_*won 5

这里,
您可以通过两种方式从文件中反序列化对象。

解决方案 1:将文件读入字符串并将 JSON 反序列化为类型

string json = File.ReadAllText(@"c:\myObj.json");
MyObject myObj = JsonConvert.DeserializeObject<MyObject>(json);
Run Code Online (Sandbox Code Playgroud)

解决方案 2:直接从文件反序列化 JSON

using (StreamReader file = File.OpenText(@"c:\myObj.json"))
{
    JsonSerializer serializer = new JsonSerializer();
    MyObject myObj2 = (MyObject)serializer.Deserialize(file, typeof(MyObject));
}
Run Code Online (Sandbox Code Playgroud)

您可以通过以下命令从NuGet下载 Newtonsoft.Json

Install-Package Newtonsoft.Json
Run Code Online (Sandbox Code Playgroud)