加速JSON序列化从C#到JSON

时间:2015-01-21 06:41:33

标签: javascript c# json serialization asmx

我想将我的数据集序列化为JSON

以下是我的ASMX序列化对象的代码段

        [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秒。这是我17columns的基准。

enter image description here

感谢你们的意见。这么晚才回复很抱歉。我会(如果我的积分达到最高投票标准)在这里投票给你的答案。

2 个答案:

答案 0 :(得分:2)

您可以在codeproject上找到关于JSON序列化的不同库(带基准)的好文章。

您可以在Article about JSON libraries

找到它

再见。

答案 1 :(得分:0)

看到这个:  http://aumcode.github.io/serbench/

图表(速度和有效负载大小):

典型人/单,列表[100],列表[5000] ......  http://aumcode.github.io/serbench/Specimens_Typical_Person-201507121220/web/overview-charts.htm

纠缠的对象图/会议/参与者/朋友...... http://aumcode.github.io/serbench/ObjectGraph_Conference-201507121245/web/overview-charts.htm

网络堆栈批处理... http://aumcode.github.io/serbench/MsgBatching-201507121210/web/overview-charts.htm

我们还有EDI X12测试,尚未发布。获取工具并运行如下: &#34; sb edi.laconf&#34;它将在磁盘上生成Web报告