【发布时间】:2015-03-19 14:36:49
【问题描述】:
我想将我的数据集序列化为 JSON。
这是我的ASMX序列化对象的sn-p代码
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetProviderMemberDetail(string jsonString)
{
BPMember bp = new BPMember();
List<BOProvider> listProvider = bp.GetProviderMemberDetail(jsonString);
return ConvertToSerializedJson(listProvider);
}
这是 ConvertToSerializedJson 的作用
public string ConvertToSerializedJson(Object listBO)
{
string jsonReturn = String.Empty;
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
jsonReturn = serializer.Serialize(listBO);
return jsonReturn;
}
我必须序列化的数据量很大,大约 200.000 个数据。
我试过这个方法,我的浏览器挂了没反应,我要等6分钟才能完成。
第二次尝试,我尝试了 Newtonsoft.Json 的序列化函数, 添加了
using Newtonsoft.Json;
并使用
更改序列化程序代码return JsonConvert.SerializeObject(listProvider);
它加快了一点,但也让我的浏览器几乎挂起。完成所有序列化需要4分钟。
问题是,我怎样才能加快序列化的速度?我的查询只需要 4 秒即可完成查询执行并从数据库中检索数据。需要很长时间的是序列化过程 有没有比这运行得更快的功能?请发布名称库或函数和基准,如果我有好的重大变化,我会更新这篇文章。
干杯。
更新 这就是我爱你们的原因,在你们好心人的建议下,我加快了速度,这是我“调整”一点的事情。
正如@Saravanan 所说,我已经减少了我的 BO 上所有未使用的(或很少使用的)。这是一个成功的调整。从 300 秒(5 分钟)到 18 秒。
正如@sanguaire 所说,我正在尝试使用 fastJSON 库 (download here),编译为 dll,添加对我的项目的引用和这个速度。
为我检索 200.000 个数据所需的时间大约是 14 秒到 18 秒。这是我的 17 列基准。
谢谢大家的意见。这么晚才回复很抱歉。我会(如果我的分数达到投票标准)在这里对你的两个答案都投赞成票。
【问题讨论】:
-
你的 bo 对象有多大,它是嵌套的吗?
-
@Saravanan 它有50个属性,所有成员只有
code { get; set; }。它有 50 个属性,但就我而言,我只对它们使用 10 个属性。属性计数有效果吗?所以我会用更少的成员创建新的 BO,因为当前的 BO 成员对象是供我的团队使用的 -
肯定会产生影响...另外,我相信属性是简单类型...在这种情况下会有所帮助
-
是的,所有属性都是简单类型,例如字符串和整数。那么你有什么建议@Saravanan?
-
创建一个有 10 个属性的对象并检查.. 它应该会加快速度..
标签: javascript c# json serialization asmx