【问题标题】:Deserialise JSON file from disk directly to object将 JSON 文件从磁盘直接反序列化为对象
【发布时间】:2016-10-14 17:31:32
【问题描述】:

我正在尝试将本地磁盘中的 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);
}

我正在尝试找到一种方法来执行此操作,而无需先将其读入字符串。

【问题讨论】:

标签: c# .net json json.net async-await


【解决方案1】:

来自Here
您可以通过两种方式从文件中反序列化对象。

Solution-1:将文件读入字符串并将 JSON 反序列化为类型

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

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

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

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

Install-Package Newtonsoft.Json

【讨论】:

    【解决方案2】:
    using (var s = new StreamReader(filePath))
    {
        using (var jr = new JsonTextReader(s))
        {
            var js = new JsonSerializer();
            var obj = js.Deserialize<MyObject>(jr);
            return obj;
        }
    }
    

    【讨论】:

      【解决方案3】:

      你可能想看看这个:https://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx

      这是一篇名为“如何:序列化和反序列化 JSON 数据”的 MSDN 文章

      【讨论】:

        猜你喜欢
        • 2011-12-14
        • 2021-12-16
        • 1970-01-01
        相关资源
        最近更新 更多