zoukankan      html  css  js  c++  java
  • json字符串转换成c#类对象 (转)

    问题描述:ExtJs的EditorGridPanel 批量修改、一次性保存。

    1. save.js ---------------------------------------
    var Json = "";         //传入后台的json字符串
    var flag = false;      //是否添加逗号标志
    var grid = new Ext.grid.EditorGridPanel({
        clickstoEdit : 1,
        listeners : {
                        afteredit : function(e) {
                            if (flag) {
                                Json += ',';
                            }
                            flag = true;
                            Json += '{"MID":' + '"' + e.record.data.M_id
                                    + '","ECode":' + '"' + e.value + '"}';
                        }
                    }

                });
    });
    // Json = "[{\"MID\":\"3\",\"ECode\":\"2900.66\"},{\"MID\":\"4\",\"ECode\":\"2348.52\"}]";
    function SaveLotinfotoDB() // 点击‘保存’按钮,数据传送到SavaData.aspx页面。
        {
            Ext.Ajax.request({
                        url : '/SaveData.aspx',
                        params : {
                            json : Json
                        },// 这里是传到后台的参数
                        success : function(r, o) {
                            Ext.Msg.alert('提示', '修改成功!');
                        },
                        failure : function() {
                            Ext.Msg.alert("提示", "保存失败!");
                        }
                    });
        }
    2. SaveData.aspx.cs---------------------------------------
        protected void Page_Load(object sender, EventArgs e)
        {
            save();
        }
        /// <summary>        Author:IT蒙古人
        /// 将JSON字符串反序列化为NET对象
        /// </summary>
        public List<FreeData> isEfect(string json)
        {
            MemoryStream stream2 = new MemoryStream();
            DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(List<FreeData>));
            StreamWriter wr = new StreamWriter(stream2);
            wr.Write(json);
            wr.Flush();
            stream2.Position = 0;
            Object obj = ser2.ReadObject(stream2);
            List<FreeData> list = (List<FreeData>)obj;
            return list;
        }

        public void save()
        {
            string json = "[" + Request["json"] + "]";
            string sql = null;
            List<FreeData> ls = isEfect(json);
            for (int i = 0; i < ls.Count; i++)
            {
                int id = ls[i].MID;
                float code = ls[i].ECode);  // sql+="UPDATE userInfo SET salary="+code+" WHERE ID="+id+";";        
            }
           // return SQLEcute(sql); //执行数据库UPDATE语句,保存(多条)数据
        }
    ---------------------------------------------------------------
    注意:那么这里的FreeData类要注意了。在FreeData类中的属性名称要和JSON数据的键名前加"_",这样才会save()函数里的ls[i].MID、ls[i].ECode获取到正确值(这个不是很肯定,但我刚开始写属性名字为别的时候获取不到值)。
    3. FreeData.cs ---------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    /// <summary>        Author:IT蒙古人
    ///FreeData 的摘要说明
    /// </summary>
    public class FreeData
    {
        private int _MID;       
        private float _ECode; 

        public FreeData()
        { }
        public float ECode
        {
            get { return _ECode; }
            set { this._ECode = value; }
        }
        public int MID {
            get { return _MID; }
            set { _MID = value; }
        }
    }
    =========================================================================================
    大功告成,ExtJs传过来的字符串(包含多条数据的)转换成c#对象,并获取值。
    望各位读者点评!

    作者:IT蒙古人 

    出处:http://hi.baidu.com/qing_bd_liang/item/537cf93751e063ca2e8ec28b

  • 相关阅读:
    阿里云ECS服务器安装docker
    ActiveMq-常见的问题
    ActiveMq-基础知识
    java语言概述
    【日语词汇类编】自然与人:气候与环境
    【日语词汇类编】传媒与娱乐:大众传播媒介
    机器学习数学基础-线性代数
    掌握机器学习数学基础之概率统计
    机器学习理论篇:机器学习的数学基础
    计算机基础知识
  • 原文地址:https://www.cnblogs.com/gengaixue/p/2663864.html
Copyright © 2011-2022 走看看