详细分析Json string的相关问题
创始人
2024-06-19 15:31:17
0

原先的测试不全面,发觉class结构一复杂,反序列化时分析Json string出现了严重的效率问题。 多方求助也没有解决。 其间试了很多人的json实现(官方的两个,google到的一个,teddy的nbear里的)。

  1. if ((b >= 0 && b <= 9) || b == . || b == - || b == +)        
  2.      {                 try                 {                    
  3.  return Convert.ToInt32(s);                 }                
  4.  catch (Exception e)                 {                    
  5.  string msg = e.Message;                 }                
  6.  try                 {                     
  7. return Convert.ToDouble(s, NumberFormatInfo.InvariantInfo);         
  8.         }                 catch (Exception e)                 {    
  9.                  string msg = e.Message;                 }             }       


都有这个问题。 后来,一点点排查,先从一个最简单的分析Json string开始,逐渐往里面加属性测试。 ***发觉当我加入 a:1.01 时速度很慢,而 a:1 时速度正常。 然后才定位到问题所在: 官方代码:

  1. class test  
  2. {  
  3.     var $var = 0;  
  4.     function add(){  
  5.       echo $var+10;  
  6.     }  
  7. }  
  8. $unserialize_var = new test;  
  9. $serializeserialize_var = serialize($unserialize_var);  
  10. echo $serialize_var;  
  11. $unserialize_var = null;  
  12. $unserializeunserialize_var = unserialize($serialize_var);  
  13. $unserialize_var->add();  
  14. $arr = array 
  15.        (  
  16.           'Name'=>'Peter',  
  17.           'Age'=>20  
  18.        );  
  19.  
  20. $jsonencode = json_encode($arr);  
  21. echo $jsonencode; 


这段代码在分析Json string里面会有严重的效率问题。 应该是C#的异常机制不完善造成的! 在java里,利用异常做这种工作对效率没有任何影响,(当然,也不提倡这么写,偷懒的行为)。

  1. '''  
  2.     ''' JSON 序列化。  
  3.     ''' 
  4.  
  5.     '''  name="Value">物件。 
  6.     Public Shared Function JsonSerialize(ByVal Value As Object) As String  
  7.         Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer  
  8.  
  9.         oSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()  
  10.         Return oSerializer.Serialize(Value)  
  11.     End Function  
  12.  
  13.     '''  
  14.     ''' JSON 反序列化。  
  15.     ''' 
  16.  
  17.     '''  name="Text">JSON 字符串。 
  18.     Public Shared Function JsonDeserialize(Of T)(ByVal Text As String) As T  
  19.         Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer  
  20.  
  21.         oSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()  
  22.         Return oSerializer.Deserialize(Of T)(Text)  
  23.     End Function 

【编辑推荐】

  1. 主要介绍Json_decode 相关问题技巧说明
  2. 大致述说JSON语法使用技巧说明介绍
  3. 如何更很好的生成JSON文本进行详细介绍
  4. 下载与学习JSON的类库的图记录
  5. 探索非同凡响的Json数据格式说明

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...