![](/img/trans.png)
[英]How do I deserialize a json with nested array in c# using Newtonsoft.Json
[英]How do I efficiently deserialize a JSON object with nested objects using a stream reader in C#?
我想有效地反序列化包含嵌套的JSON對象數組的JSON對象。
例如,一個JSON目錄列表可能包含一個JSON根文件系統對象,以及一個遞歸的文件系統對象數組。
{
"bytes": 0,
"path": "/Public",
"is_dir": true,
"contents": [
{
"bytes": 0,
"modified": "Mon, 18 Jul 2011 20:13:43 +0000",
"path": "/Public/1.txt",
"is_dir": false
},
{
"bytes": 0,
"modified": "Mon, 18 Jul 2011 20:13:43 +0000",
"path": "/Public/2.txt",
"is_dir": false
}
]
}
相應的C#類看起來像這樣
class JsonFileInfo
{
public string Path;
public long Bytes;
public string Modified;
public bool IsDir;
public List<JsonFileInfo> Contents;
}
我已經嘗試過.NET DataContractJsonSerializer例如
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(RainstormFileInfo));
JsonFileInfo jfi = (JsonFileInfo)serializer.ReadObject(responseStream);
而且我也嘗試了JSON.NET JsonSerializer + JsonTextReader例如
JsonReader reader = new JsonTextReader(new StreamReader(responseStream))
JsonSerializer serializer = new JsonSerializer();
JsonFileInfo jfi = serializer.Deserialize<JsonFileInfo>(reader);
但是這兩個框架都會在一串反序列化中將整個contents
JSON子數組讀取到內存中。
如何一次從一個JsonFileInfo對象的流中讀取此JSON結果?
現在有一個庫可以完全滿足您的需求。 它將一次讀取一個字節的JSON並返回結果。 完整的描述和用法示例在這里 。
它可以使您避免重新發明輪子。
本質上,此庫允許您解析完整的JSON對象或定位嵌套對象。 在任何一種情況下,這都是解析JSON的非常有效的方法,並且比JSON.NET更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.