• 关于c#对象转JSON,页面使用javascript异步调用C#返回JSON字符串(eval函数转成对象)


    仅供自己学习备忘。欢迎拍砖指正。

    本文调用了Newtonsoft.Json.dll

    Newtonsoft.Json.XML 不知道有什么用,本文只是在下载的JSON.NET上面做了一些小例子,学习一下如何,将C#中的对象转成JSON格式的字符串,如何在页面将该串合理应用到页面中。

    主要通过一下三中颜色,三个部分调用就可以实现,相关调用。

    这之中使用了以前一些js调用服务器端脚本代码。

    页面代码:如下

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
      
        <script type="text/javascript" language="javascript">
           
            var xmlHttp;
           
            //创建XMLHTTP对象,判断浏览器是IE还是其他浏览器
            function createXMLHttp()
            {   //IE
                if(window.ActiveXObject)
                {
                    return new ActiveXObject("Microsoft.XMLHttp");
                }
                //其他遵循W3C标注的浏览器
                if(window.XMLHttpRequest)
                {
                    return new XMLHttpRequest();
                }
            }
           
            function getBook()
            {
            
                //调用createXMLHttp创建xmlHttp对象
                xmlHttp=createXMLHttp();
                //默认使用异步回发状态是TRUE,此时与服务器通讯有5状态
                xmlHttp.onreadystatechange=changeState;
                //通过GET方法发送请求道服务器 读取Books.xml数据,这里采用的是相对路径
                xmlHttp.open("GET","default.aspx",true)
                //在使用GET方法的时候.send方法法的数据类型为NULL ,具体参见Http通讯协议
                xmlHttp.send(null);
            }
            //在与服务器通讯过程中的5种状态
            function changeState()
            {
                if(xmlHttp.readyState==4) //当xmlHttp.readyState=4的时候说明通信完毕,
                {
                    if(xmlHttp.status==200)//虽然通讯完毕,但是还要考虑 请求的服务器页面是否存在,xmlHttp.status=200表示OK了 页面存在
                    {
                          ShowInfo();
                    }
                }    
            }
            function ShowInfo()
            {
                //将json字符转换成json对象使用JS的内置对象eval函数
               var info= eval('('+xmlHttp.responseText+')');
               var len=info.length;
               var div= document.getElementById("showInfo");

                 var td="";
                 for(var i=0;i<len;i++)
                 {
                  td +="<tr><td>"+info[i].EmployeeID+"</td><td>"+info[i].EmployeeName+"</td><td>"+info[i].EmployeeInfo+"</td></tr>"
               
                 }
                 div.innerHTML="<table  class='vtable'>"
                 +"<tr><td>用户ID</td><td>用户名</td><td>用户信息</td></tr>"
                 +td
                 +"</table>"; 
            }

        </script>
        <style>     
        .vtable{border-collapse:collapse;border:none;}
        .vtable td {border:solid #090 1px;}
        </style>
    </head>
    <body>
        <form id="form1" runat="server" >
        <div id="showInfo"  >
        </div>
        <script>
            getBook();
        </script>
        </form>
    </body>

    </html>

    以下是服务器端代码

    主要调用了 一下两个方法。

     public class Employee
    {
        private string[] employeeInfo;
       
        public int EmployeeID;
        public string EmployeeName;
        public string[] EmployeeInfo
        {
            get { return this.employeeInfo; }
            set { this.employeeInfo = value;}
        }
    }
    //获取JSON的方法主要是使用了using Newtonsoft.Json;命名空间中的JavaScriptConvert.SerializeObject();方法

     public string ToJSONString(int employeeID, string employeeName, string[] employeeInfo)
        {
            Employee employee = new Employee();
            employee.EmployeeID = employeeID;
            employee.EmployeeName = employeeName;
            employee.EmployeeInfo = employeeInfo;

            //为了写两个对象,多写了一个实例
            Employee employee1 = new Employee();
            employee1.EmployeeID = employeeID;
            employee1.EmployeeName = employeeName;
            employee1.EmployeeInfo = employeeInfo;
            IList<Employee> list=new List<Employee>();
            list.Add(employee);
            list.Add(employee1);

           

            return JavaScriptConvert.SerializeObject(list);
        }

    Defalut.aspx页面中 pageload下面 做了如下操作

      protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                 //这里主要是原JSON.net 使用了一个webserverice调用了相关方法,这方面根据个人需要可以自行修改。
                MyServ.WebService MyWebServ = new MyServ.WebService();
                string[] info = new string[] { "爱牛牛","12313","风动" };
                string employeeJSON = MyWebServ.ToJSONString(12, "大熊", info);

                Response.Write(employeeJSON);
                Response.End();
            }
        }

     具体实现,现在相关dll 即可实现。

  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/kaixinmenghuan/p/1941153.html
Copyright © 2020-2023  润新知