asp.net的JSONHelper 类

本文介绍了一个高度灵活的JSON通用类型(JsonObject),用于解析及序列化JSON对象,支持多种构建方式并提供了获取属性值的方法。通过实例演示了如何使用此类构建复杂的JSON对象,并展示了其在.NET框架中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用方法:
JSONHelper json  =   new  JSONHelper();

json.success 
=   true ;

json.AddItem(
" aid " " 1 " );

json.ItemOk();

json.totlalCount
= 10 ;

string  jsons  =   "" ;
if  (json.totlalCount  >   0 )
{
    jsons 
=  json.ToString();
}
else
{
    jsons 
=   @" {success:false} " ;
}
return  jsons;
JSONHelper.cs
public   class  JSONHelper
{
    
// 对应JSON的singleInfo成员
     public   string  singleInfo  =   string .Empty;

    
protected   string  _error  =   string .Empty;
    
protected   bool  _success  =   true ;
    
protected   long  _totalCount  =   0 ;
    
protected  System.Collections.ArrayList arrData  =   new  ArrayList();
    
protected  System.Collections.ArrayList arrDataItem  =   new  ArrayList();

    
public  JSONHelper()
    {
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

    
// 对应于JSON的success成员
     public   bool  success
    {
        
get
        {
            
return  _success;
        }
        
set
        {
            
// 如设置为true则清空error
             if  (success) _error  =   string .Empty;
            _success 
=  value;
        }
    }

    
// 对应于JSON的error成员
     public   string  error
    {
        
get
        {
            
return  _error;
        }
        
set
        {
            
// 如设置error,则自动设置success为false
             if  (value  !=   "" ) _success  =   false ;
            _error 
=  value;
        }
    }

    
public   long  totlalCount
    {
        
get  {  return  _totalCount; }
        
set  { _totalCount  =  value; }
    }


    
// 重置,每次新生成一个json对象时必须执行该方法
     public   void  Reset()
    {
        _success 
=   true ;
        _error 
=   string .Empty;
        singleInfo 
=   string .Empty;
        arrData.Clear();
        arrDataItem.Clear();
    }



    
public   void  AddItem( string  name,  string  value)
    {
        arrData.Add(
" / ""  + name +  " / " : "   +   " / ""  + value +  " / "" );
    }



    
public   void  ItemOk()
    {
        arrData.Add(
" <BR> " );
        
// 返回总记录条数
        totlalCount ++ ;
    }

    
// 序列化JSON对象,得到返回的JSON代码
     public   override   string  ToString()
    {
        StringBuilder sb 
=   new  StringBuilder();
        sb.Append(
" { " );
        sb.Append(
" / " totalCount / " :/ ""  + _totalCount.ToString() +  " / " , " );
        sb.Append(
" / " success / " : "   +  _success.ToString().ToLower()  +   " , " );
        sb.Append(
" / " error / " :/ ""  + _error.Replace( " / "" " /// "" ) +  " / " , " );
        sb.Append(
" / " data / " :[ " );

        
int  index  =   0 ;
        sb.Append(
" { " );
        
if  (arrData.Count  <=   0 )
        {
            sb.Append(
" } " );
        }
        
else
        {
            
foreach  ( string  val  in  arrData)
            {
                index
++ ;

                
if  (val  !=   " <BR> " )
                {
                    sb.Append(val 
+   " , " );
                }
                
else
                {
                    sb 
=  sb.Replace( " , " "" , sb.Length  -   1 1 );
                    sb.Append(
" }, " );
                    
if  (index  <  arrData.Count)
                    {
                        sb.Append(
" { " );
                    }
                }

            }
            sb 
=  sb.Replace( " , " "" , sb.Length  -   1 1 );
            sb.Append(
" ] " );
        }

        sb.Append(
" } " );
        
return  sb.ToString();
    }

    
public   string  ToSingleString()
    {
        StringBuilder sb 
=   new  StringBuilder();
        sb.Append(
" { " );

        sb.Append(
" success: "   +  _success.ToString().ToLower()  +   " , " );

        sb.Append(
" data: " );

        
int  index  =   0 ;
        sb.Append(
" { " );
        
if  (arrData.Count  <=   0 )
        {
            sb.Append(
" } " );
        }
        
else
        {
            
foreach  ( string  val  in  arrData)
            {
                index
++ ;

                
if  (val  !=   " <BR> " )
                {
                    sb.Append(val 
+   " , " );
                }
                
else
                {
                    sb 
=  sb.Replace( " , " "" , sb.Length  -   1 1 );
                    sb.Append(
" }, " );
                    
if  (index  <  arrData.Count)
                    {
                        sb.Append(
" { " );
                    }
                }

            }
            sb 
=  sb.Replace( " , " "" , sb.Length  -   1 1 );
            sb.Append(
"" );
        }

        sb.Append(
" } " );
        
return  sb.ToString();
    }
}
url: http://greatverve.cnblogs.com/archive/2011/07/06/asp-net-jsonhelper.html
.NET通用JSON解析/构建类的实现(c#)

在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类型(JsonObject),实现对JSON的解析及序列化。

假设JSON对象内容如下:


  1. {
  2.  orders: {
  3.  date: '21:31:59',
  4.  name: 'Xfrog',
  5.  books: [{
  6.  name: 'C# 网络核心编程',
  7.  publish: '2010-3-24'
  8.  }, {
  9.  name: 'C#入门经典中文版',
  10.  publish: '2009-10-16'
  11.  }]
  12.     },
  13.  blog: 'http://www.cnblogs.com/xfrog'
  14. }

使用JsonObject来构建,可选择以下三种方式: 
方式一:


  1. //通过标准构造函数 
  2. JsonObject json = new JsonObject(); 
  3. json["orders"] = new JsonProperty(new JsonObject()); 
  4. json["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog"); 
  5. JsonObject config = json.Properties<JsonObject>("orders"); 
  6. json["orders"]["date"] = new JsonProperty(DateTime.Now.ToLongTimeString()); 
  7. json["orders"]["name"] = new JsonProperty("Xfrog"); 
  8. json["orders"]["books"] = new JsonProperty(); 
  9. JsonProperty book = json["orders"]["books"].Add(new JsonObject()); 
  10. book["name"] = new JsonProperty("C# 网络核心编程"); 
  11. book["publish"] = new JsonProperty("2010-3-24"); 
  12. book = json["orders"]["books"].Add(new JsonObject()); 
  13. book["name"] = new JsonProperty("C#入门经典中文版"); 
  14. book["publish"] = new JsonProperty("2009-10-16"); 

方式二:


  1. //通过回调函数简化对象的构建 
  2. JsonObject json2 = new JsonObject((a) => 
  3. { 
  4.     a["orders"] = new JsonProperty(new JsonObject((b) => 
  5.     { 
  6.         b["date"] = new JsonProperty(DateTime.Now.ToLongTimeString()); 
  7.         b["name"] = new JsonProperty("Xfrog"); 
  8.         b["books"] = new JsonProperty(); 
  9.         b["books"].Add(new JsonObject((c) => 
  10.         { 
  11.             c["name"] = new JsonProperty("C# 网络核心编程"); 
  12.             c["publish"] = new JsonProperty("2010-3-24"); 
  13.         })); 
  14.         b["books"].Add(new JsonObject((c) => 
  15.         { 
  16.             c["name"] = new JsonProperty("C#入门经典中文版"); 
  17.             c["publish"] = new JsonProperty("2009-10-16"); 
  18.         })); 
  19.     })); 
  20.     a["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog"); 
  21. }); 

方式三:


  1. //通过字符串构建Json对象 
  2. JsonObject newObj = new JsonObject(jsonStr); 

获取Json对象属性值的方法,也有三种方式:


  1. //通过泛型函数 
  2. Console.WriteLine(newObj["orders"].GetValue<JsonObject>()["books"].GetValue<List<JsonProperty>>()[1].GetValue<JsonObject>()["name"].Value); 
  3. //通过属性类型对应的属性 
  4. Console.WriteLine(newObj["orders"].Object["books"].Items[1].Object["name"].Value); 
  5. //如果属性为对象类型,可通过字符串索引简化 
  6. Console.WriteLine(newObj["orders"]["books"][1]["name"].Value); 

直接使用ToString函数,将JsonObject转换为Json字符串:


  1. String jsonStr = json.ToString(); 

注意:

我在重载ToString函数时,并没有将字符串转换为JavsScript字符串类型(即对需要转义的字符的处理),当然,要实现也是极其简单的。另外,对于带String参数的ToString,我也为做特殊处理,感兴趣的朋友可自行实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值