zoukankan      html  css  js  c++  java
  • jsp 页面解析json字符串

    我们在使用AJAX来做服务器端和客户端交互的时候,一般的做法是让服务器端返回一段JSON字符串,然后在客户端把它解析成JavaScript 对象。解析时用到的方法一般是eval或者new function,而目前IE8和Firefox3.1又内置了原生的JSON对象(据说会有一定的性能提升)。那我们在实际使用的时候怎样从这三种方法 (因为性能问题,不考虑用javascript实现的解析)里面来选择呢?面对众多的浏览器,哪种方式的性能是最好的呢?

    一、测试方法

    1、首先指定测试次数及JSON字符串

       1: var count = 10000, o = null, i = 0, jsonString = '{"value":{"items": [{"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}]},"error":null}';  

    2、循环解析并记录时间

    ◆eval

       1: var beginTime = new Date();
       2: for ( i = 0; i < count; i++ ) {
       3:     o = eval( "(" + jsonString + ")" );
       4: }
       5: Console.output( "eval:" + ( new Date() - beginTime ) );  

    ◆new Function

       1: var beginTime = new Date();
       2: for ( i = 0; i < count; i++ ) {
       3:     o = new Function( "return " + jsonString )();
       4: }
       5: Console.output( "new Function:" + ( new Date() - beginTime ) );  

    ◆native

       1: if ( typeof JSON !== "undefined" ) {
       2:     var beginTime = new Date();
       3:     for ( i = 0; i < count; i++ ) {
       4:         o = JSON.parse( jsonString );     }
       5:     Console.output( "native:" + ( new Date() - beginTime ) );
       6: } else {
       7:     Console.output( "native:not support!" );
       8: }

    二、测试对象

    选择目前主流的浏览器(不考虑Maxthon一类的外壳),包括IE6、7、8,Firefox2、3、3.1,Chrome,Opera及Safari3、4。

    三、测试环境

    T9300 CPU + 4G RAM + Windows2003,其中IE8使用的是Vista的环境,IE7在另外一台工作机(2G CPU + 2G RAM + Windows2003),考虑到主要是测试浏览器客户端的性能,结果的误差应该能够接受。

    四、测试结果

    *说明1:数值越小越好

    *说明2:在当前列中绿色背景的表示性能最好,红色性能最差

    1、Firefox2、3全部垫底,IE6的性能优于IE7(可能和机器不一致有关),Chrome和Safari4的性能远远超出其它浏览器。

    2、不同的浏览器下eval和new Function的性能不一致,总的来说eval更好,但Firefox下new Function的性能是eval的一倍,为了更好的兼容各个浏览器,我们把对JSON的解析单独封装成一个对象来处理:

    ◆wrapper

       1: var __json = null;
       2: if ( typeof JSON !== "undefined" ) {
       3:     __json = JSON
  • 相关阅读:
    REUSE_ALV_GRID_DISPLAY_LVC I_CALLBACK_HTML_TOP_OF_PAGE
    查找数组中最大值java
    jvm 调优
    jvm 内存
    树形遍历文件夹
    程序创建一个ArrayList,添加1到10的10个随机数,删除大于5的数 java
    字符串反序排序 并带有空格输出 java
    摆动排序
    免密登陆
    springboot UEditor集成
  • 原文地址:https://www.cnblogs.com/LLLONG/p/3090706.html
Copyright © 2011-2022 走看看