详细分析Json string的相关问题

开发
还是比较常用的,于是我研究了一下XX,在这里拿出来和大家分享一下,希望对大家有用,经过长时间学习XX,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西

原先的测试不全面,发觉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数据格式说明
责任编辑:chenqingxiang 来源: 赛迪
相关推荐

2010-02-23 17:44:22

WCF数据契约

2009-12-07 15:37:00

WCF控件

2009-06-18 14:00:51

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基础

2010-03-04 15:51:40

2010-04-26 18:17:19

Oracle存储过程

2009-09-14 16:21:34

LINQ To XML

2009-09-09 09:48:43

Linq延迟加载

2009-10-10 13:52:57

VB Update方法

2010-04-08 15:13:44

无线AP故障问题

2009-12-03 17:41:40

PHP应用发展

2021-10-25 19:52:52

IntentFilte

2009-09-14 13:50:35

LINQ编程模型

2009-11-20 13:11:44

Oracle XML数

2009-09-08 15:56:50

Linq使用Group

2010-01-06 13:50:37

.NET Framew

2009-12-10 13:53:58

VS2008专业版

2009-03-24 08:30:54

AndroidGoogle移动os

2009-09-07 13:19:44

C#线程同步
点赞
收藏

51CTO技术栈公众号