C# 从大JSON中提取数据
我们有一个非常大的JSON,接近1500个字段。我们希望读取大部分JSON字段(大多数时候我必须读取整个JSON并获取80%的数据)。什么是性能优化程度最高的方法?我们应该使用JObject.Parse然后使用JsonPath,还是应该使用JsonConvert.DeserializeObject然后使用linq查询,还是有其他更好的方法呢?既然你提到了它是一个大的JSON,我建议你使用一个stram阅读器,这样你就不需要将整个JSON加载到内存中了C# 从大JSON中提取数据,c#,json,json.net,C#,Json,Json.net,我们有一个非常大的JSON,接近1500个字段。我们希望读取大部分JSON字段(大多数时候我必须读取整个JSON并获取80%的数据)。什么是性能优化程度最高的方法?我们应该使用JObject.Parse然后使用JsonPath,还是应该使用JsonConvert.DeserializeObject然后使用linq查询,还是有其他更好的方法呢?既然你提到了它是一个大的JSON,我建议你使用一个stram阅读器,这样你就不需要将整个JSON加载到内存中了 using (var reader
using (var reader = new JsonTextReader(new StreamReader(stream)))
{
while(!(reader.TokenType.Equals(JsonToken.EndObject) && reader.Depth == 0))
{
if (reader.TokenType.Equals(JsonToken.PropertyName))
if (!DoSomething(reader))
break;
if (!reader.Read())
break;
}
}
例如,在DoingSomething
方法中,可以从一个字段读取值
private bool DoSomething(JsonTextReader reader)
{
if(reader.Path.Equals("FieldName_You_Are_Looking_For"))
{
string jsonText = JsonTextReaderToJsonText(reader);
// Do something to read the value
}
// return true to continue reading, return false to stop reading
return true;
}
希望它能帮助你看起来你已经知道了一些选项,为什么不试试它们,用秒表测量时间,找到最有效的方法呢?也许这个链接会对你有帮助,谢谢刘建平,大多数时候我必须阅读整个JSON,并获得80%的数据内存,流读取器比将整个数据加载到内存中效率更高。我看到的唯一限制是,我需要为检查每个路径添加这么多If条件。是否有更好的路径检查和检索方法