DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 詳細分析Json string的相關問題
詳細分析Json string的相關問題
編輯:XML詳解     

原先的測試不全面,發覺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. ''' <summary> 
  2.     ''' JSON 序列化。  
  3.     ''' </summary> 
  4.     ''' <param name="Value">物件。</param> 
  5.     Public Shared Function JSonSerialize(ByVal Value As Object) As String  
  6.         Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer  
  7.  
  8.         oSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()  
  9.         Return oSerializer.Serialize(Value)  
  10.     End Function  
  11.  
  12.     ''' <summary> 
  13.     ''' JSON 反序列化。  
  14.     ''' </summary> 
  15.     ''' <param name="Text">JSON 字符串。</param> 
  16.     Public Shared Function JSonDeserialize(Of T)(ByVal Text As String) As T  
  17.         Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer  
  18.  
  19.         oSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()  
  20.         Return oSerializer.Deserialize(Of T)(Text)  
  21.     End Function 

【編輯推薦】

  1. 主要介紹JSon_decode 相關問題技巧說明
  2. 大致述說JSON語法使用技巧說明介紹
  3. 如何更很好的生成JSON文本進行詳細介紹
  4. 下載與學習JSON的類庫的圖記錄
  5. 探索非同凡響的JSon數據格式說明
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved