Home  >  Article  >  Database  >  Json Object转Model, Model、DataTable转Json Object (Jayrock技

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

WBOY
WBOYOriginal
2016-06-07 14:59:271320browse

看过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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn