我正在尝试将本地磁盘的 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);
}
我正在尝试找到一种方法来做到这一点,而无需先将其读取到字符串中。
从这里
您可以通过两种方式从文件反序列化对象。
解决方案 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
using (var s = new StreamReader(filePath))
{
using (var jr = new JsonTextReader(s))
{
var js = new JsonSerializer();
var obj = js.Deserialize<MyObject>(jr);
return obj;
}
}
你可能
想看看这个: https://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx
这是一篇名为"如何:序列化和反序列化 JSON 数据"的 MSDN 文章