Json Object转Model, Model、DataTable转Json Object (Jayrock技巧)

    本文假定读者有一定的Ext 控件的使用经验...

    看过Ext - EditGridPanel实现效果的朋友会很惊讶,一个Grid就能实现所有增删改查功能。在展示给客户看时,让你的表现得很风骚。而他们又怎么知道,我们在调试js时,是多么痛苦。

    如何在js中调用后台业务逻辑类,在我前面的文章中已经讲述过,而本篇的重点在于js对象与后台对象之间的转换。

    1. Json Object转Model —— js定义json对象传递到后台业务类,后台接收后,转为数据模型。

    Json Object = { 'KId':1, 'IndexDirectory':‘c:/root’}

    转换方法:

KdgPointData kpd  =  (KdgPointData)JsonConvert.Import( typeof (KdgPointData), jsonObject.ToString());

 

     KdgPointData就是数据模型类,使用JsonConvert对象需要引用两个动态链接库(地址见文章附录),并添加: using Jayrock.Json.Conversion;

    Import()方法重载了5次,这里用到的是,第一个参数为你想转换的类型,第二个参数为json object转为string后的结果。

    注意:在后台接收js对象,都用object来接收,也就是说,上面的jsonObject在c#方法类中,是一个object对象,转换后,才是model。而且jsonObject中元素的个数,key的大小写都要跟Model中的属性保持一直。

    2. Model转Json Object —— 这个不需要转变,直接将Model或者Model[]作为方法的返回类型,在js那边接收后,定义对应的JsonReader,就可以了。

    如果你在定义Ext.data.store使用了proxy属性,并定义了相应的url,那么Jayrock倒有一个将Model转为符合json格式字符串的方法:

string  temp  =  JsonConvert.ExportToString(model);

    然后,Response.Write(temp); Response.End();   如此请求这个url后,从而获得Json数据。

    3. DataTable转Json Object —— 这个有两种做法,一种是将DataTable转为Model或Model[],再通过第二种方式转换,或者自己写一个方法拼接json 字符串:

  ///   <summary>  DataTable二维表格转为符合json格式的字符串  </summary>
        
///   <param name="tableSource"> 数据库查询结果 </param>
        
///   <param name="fields"> 需要添加进来的字段名 </param>
        
///   <returns></returns>
         public   string  DataTableToJson(DataTable tableSource,  string [] fields)
        {
            
string  jsonData  =   " {'totalCount': "   +  tableSource.Rows.Count  +   " ,'root':[ " ;

            
if  (tableSource.Rows.Count  >   0 )
            {
                
foreach  (DataRow row  in  tableSource.Rows)
                {
                    jsonData 
+=   " { " ;
                    
for  ( int  i  =   0 ; i  <  fields.Length; i ++ )
                        jsonData 
+=   " ' "   +  fields[i]  +   " ':' "   +  row[fields[i]]  +   " ', " ;
                    jsonData 
=  jsonData.Substring( 0 , jsonData.Length  -   1 );
                    jsonData 
+=   " }, " ;
                }
                jsonData 
=  jsonData.Substring( 0 , jsonData.Length  -   1 );
                jsonData 
+=   " ]} " ;
            }
            
else
            {
                jsonData 
+=   " ]} " ;
            }

            
return  jsonData;
        }

    封装后格式为{

        totalCount : 6,

        root : [

            {'id' : 1, 'name' : 'lislie' }, { 'id' : 2, 'name' : 'Mark' }...

        ]

    }

    使用方法:string temp = DataTableToJson(dt, {"id", "name"});

    附录: Jayrock开源项目的动态链接库文件下载链接:http://download.csdn.net/source/405504  不知道是不是CSDN的资源频道侵犯了很多出版商的利益,以至于改版之后,我在首页看不到“我的资源”的链接,而以前上传的资源现在也处于无法访问的状态,需要的朋友可以在评论中留下邮箱。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值