Maison  >  Article  >  base de données  >  Json Object转Model, Model、DataTable转Json Object (Jayrock技

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

WBOY
WBOYoriginal
2016-06-07 14:59:271318parcourir

看过Ext - EditGridPanel实现效果的朋友会很惊讶,一个Grid就能实现所有增删改查功能。在展示给客户看时,让你的表现得很风骚。而他们又怎么知道,我们在调试js时,是多么痛苦。 如何在js中调用后台业务逻辑类,在我前面的文章中已经讲述过,而本篇的重点在于

看过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 字符串:

///

DataTable二维表格转为符合json格式的字符串
        
///数据库查询结果
        
///需要添加进来的字段名
        
///
        publicstring 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"});

http://hi.baidu.com/38608338/blog/item/a746f9dcab53653c5982dde2.html

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn