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

2023-11-16

    本文假定读者有一定的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的资源频道侵犯了很多出版商的利益,以至于改版之后,我在首页看不到“我的资源”的链接,而以前上传的资源现在也处于无法访问的状态,需要的朋友可以在评论中留下邮箱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Json Object转Model, Model、DataTable转Json Object (Jayrock技巧) 的相关文章

随机推荐

  • selenium⼊⻔到放弃-------->学会了就是玩,能玩出花来

    目录 爬虫和反爬虫之间的斗争 爬虫的建议 动态HTML技术了解 获取ajax数据的方式 selenium chromedriver获取动态数据 selenium 下载chromedriver 安装Seleniumselenium入门 Chr
  • vue3 子组件向父组件传递数据,函数

    父组件向子组件传递参数请看 父组件vue3 setup 父组件向子组件传递参数 子组件 defineExpose 暴露uid name参数和sonToFather的方发 在setup语法糖里面defineExpose不用import引入直接
  • SummaryWriter的使用

    from torch utils tensorboard import SummaryWriter import numpy as np from PIL import Image writer SummaryWriter logs ima
  • el表达式和jstl标签库

    el表达式 只用于jsp页面中 el表达式的最初提出来的时候的作用 1 可以从域对象中获取数据 比较简单 获取域对象内容的表达式 pageContext request session application 2 第二种用法 在el表达式中
  • 一个可以让你斩获大厂Offer的笔记、速来领取

    青春啊 永远是美好的 可是真正的青春 只属于这些永远力争上游的人 永远忘我劳动的人 永远谦虚的人 最近收到不少的优秀学生投稿 他们有投稿手写笔记 有手写博客 也还有视频 小编也从中挑出几篇较为优秀的文章 下面一起看看吧 C认证优秀学员笔记又
  • HashMap多线程造成了CPU100%,死循环

    resize 方法的时候是罪魁祸首
  • STM32F1xx IAP跳转App 后中断异常及解决

    网上看到一些网友遇到STM3F1xx系列编写IAP程序经常遇到跳转到App后中断异常的问题 如一触发串口接收中断就复位等 现梳理如下 其实引起上述异常的根本原因就是 共用一组件 中断无入口 如 IAP程序中配置并打开了USART1接收中断
  • 使用Vue实现div上下收缩动画效果

    封装组件
  • springboot原理

    1 什么是SpringBoot SpringBoot是一个快速开发框架 快速的将一些常用的第三方依赖整合 原理 通过Maven子父工程的方式 简化XML配置 全部采用注解形式 内置Http服务器 Jetty和Tomcat 最终以java应用
  • ConstrainLayout解决复杂的嵌套布局

    最近 项目比较忙 没什么时间写博客 今天我要讲的是 项目中复杂的嵌套布局你讲采取何种方式呢 如果按常规方式去做 估计你做完一个界面 估计够呛 我将推荐你们使用谷歌推出的ConstrainLayout 虽然还没有出正式版本 但用于复杂嵌套布局
  • OJ系统刷题 第九篇(难篇)

    13441 求小数的某一位 难题 二刷 三刷 时间限制 1 秒 内存限制 128 MB 分数 tfrac a b ba 化为小数后 小数点后第n位的数字是多少 输入 三个正整数a b n 相邻两个数之间用单个空格隔开 0
  • Windows下好用的终端程序ConEmu

    Windows下的终端程序一直是一个问题 默认的cmd已经老旧不堪 而且在Windows 10中已经取消了在此处打开终端的右键菜单 改为使用功能更加强大的Powershell 而Powershell虽然功能强大 但是默认自带的终端程序却很不
  • COCO数据集解析生成语义分割mask

    COCO数据集解析生成语义分割mask 通过coco数据集的标注文件 instances train2014 json instances val2014 json 生成语义分割mask存在不同类别区域重叠问题 导致重叠部分像素的数值超出
  • linux的PAM认证和shadow文件中密码的加密方式

    它是一种统一的认证方案 PAM 让您能随时改变您的认证方法以及需求 并且不需要重新编译任何代码就封装了所有本地认证方法 具体见 PAM 网站 对于 PAM 您只需要做 对您的密码采用不同于 DES 的加密方式 让它们面对暴力解码 brute
  • “自顶向下,逐步求精“的方法简介

    自顶向下 逐步求精 的方法思路代表了生活中大多数事情的处理方法 它的奥妙之处在于将繁杂棘手的事务进行分解 逐部列条 化为最简易单调的子任务然后进行求解 如图即是一个很典型的逐步分解的问题模型 对于一件既定的事务 先进行总体性的了解即定出整个
  • halcon 中 select_shape 算子 相关特征参数

    求Region指定特征值 region features Regions Features Value 根据特征值选择区域 select shape Regions SelectedRegions Features Operation Mi
  • 安卓初学——界面按钮响应

    安卓学习 采用onClickListener监听器 界面按钮响应 一 定义监听 绑定组件 二 通过匿名内部类 把组件和事件绑定 三 采用view 对象调用onClick 四 在当前Activity实现监听接口 一 定义监听 绑定组件 自定义
  • VMware安装后打开就蓝屏

    VMware虚拟机开机蓝屏 追风 80 人赞同了该文章 目录 收起 一 查看主板上的虚拟化技术支持是否开启 二 开启虚拟机平台 如果在新建的虚拟机安装好后一点开机出现蓝屏 反复重装并且确定了新建虚拟机没有出错的情况下考虑是否是虚拟化没有开启
  • MobaXterm的下载安装

    下载地址 MobaXterm Xserver with SSH telnet RDP VNC and X11 Home Edition 进入页面后 点击绿色的方框下载 下载后得到一个压缩包 解压后可以看到有两个文件 点击 msi进行安装 选
  • Json Object转Model, Model、DataTable转Json Object (Jayrock技巧)

    本文假定读者有一定的Ext 控件的使用经验 看过Ext EditGridPanel实现效果的朋友会很惊讶 一个Grid就能实现所有增删改查功能 在展示给客户看时 让你的表现得很风骚 而他们又怎么知道 我们在调试js时 是多么痛苦 如何在js