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

时间:2016-06-14 06:18:12

标签: c# .net 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);
}

我正试图找到一种方法来做到这一点,而不是先把它读成字符串。

3 个答案:

答案 0 :(得分:4)

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

解决方案-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

答案 1 :(得分:3)

using (var s = new StreamReader(filePath))
{
    using (var jr = new JsonTextReader(s))
    {
        var js = new JsonSerializer();
        var obj = js.Deserialize<MyObject>(jr);
        return obj;
    }
}

答案 2 :(得分:1)

您可能希望看一下:https://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx

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