第一种:利用MODEL拼成要输出JSON的对象。再用JSON.NET转成JSON输出到前端(这种常用,就不举例了。)

  本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用。或许你可以直接利用JavaScript代码通过Ajax的方式来读取XML,然后直接对其中的内容进行解析,这样或许更直接一些。但本文中给出的代码旨在说明如何通过原生的C#代码来完成这一转换。除此之外,你仍然可以借用一些第三方类库或者更高级一些的.NET库对象来实施转换。我们来看看这里介绍的一些较为简单的方法,但前提是你必须拥有可支持的类库和对象以备使用。

图片 1图片 2

第二种:利用table拼成JSON数据格式,再用JSON.NET转成JSON输出到前端:

  • 使用Json.NET类库
 1 <head>
 2     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 3     <title></title>
 4     <script type="text/javascript">
 5         var obj = new Object();
 6         obj.Name = "八戒"
 7         obj.Age = 500;
 8 
 9         //通过字面量的形式来定义对象
10         var obj1 = { "Name": "八戒", "Age": "500" };
11         var arr = [{ "Name": "八戒", "Age": "500" }, { "Name": "八戒1", "Age": "1000" }];
12 
13         //JSON格式:将json的字面量表示形式,当做字符串存放,则为json格式字符串
14         var str = '{ "Name": "八戒", "Age": "500" }';
15         var jsonstrarr = '[{ "Name": "八戒", "Age": "500" }, { "Name": "八戒1", "Age": "1000" }];';
16         
17         //将json字符串转换成js对象(数组)
18         var resobj = JSON.parse(str);
19         alert(resobj.Name);
20 
21     </script>
22 </head>
23 <body>
24 </body>
25 </html>

          

  前提是需要首先下载和安装Json.NET类库,在这里可以找到

jsobAndJson

  dt = new DataTable();

            dt.Columns.Add(new DataColumn("列头",typeof(string)));
            dt.Columns.Add(new DataColumn("object", typeof(object)));

            DataRow dr = dt.NewRow();
            dr[0] = "abc";

            DataTable dt2 = dt.Clone();
            dt2.Columns.Add("defaultdata", typeof(string));
            DataRow dr2 = dt2.NewRow();
            dr2[0] = "defgijk";
            dr2["defaultdata"] = "cccc";
            dt2.Rows.Add(dr2);

            dr[1] = dt2;

            dt.Rows.Add(dr);

            GridView1.DataSource = dt.Rows[0][1];
            GridView1.DataBind();

            Label1.Text = JsonConvert.SerializeObject(dt);

  下面是一个例子:

 在前端js对象和json对象的互转:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using Newtonsoft.Json;

namespace JSonConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml = "<Test><Name>Test class</Name><X>100</X><Y>200</Y></Test>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);

            Console.WriteLine("XML -> JSON: {0}", json);
            Console.ReadLine();

        }
    }
}

一、JS对象转换成为JSON

第三种:用JSON.net自带的JOBJECT,拼成JSON格式,转成JSON在前端输出:

  • 使用.NET
    Framework中的JavaScriptSerializer.aspx)类

处理:引用一个json2.js文件,调用JSON.stringify()方法。例如:var data =
new Object(); var json_data = JSON.stringify(data);

    

  首先需要确保你的工程或服务器支持.NET
4.0或以上版本的Framework,否则无法找到该类。

 

JObject obj = new JObject();
    obj.Add(new JProperty("Status", "S"));
    obj.Add(new JProperty("TotalCount", totalCount));
    JArray array = new JArray();
    if (result != null)
    {
    foreach (var item in result)
    {    
    array.Add(
    new JObject(
    new JProperty("X", item.X)
    , new JProperty(" XX", item.XX)
    , new JProperty("XXX", item.XXX)
    , new JProperty("Xxxxx", item.XXXX)
    , new JProperty("xxxxxxx", item.XXXXX)
    , new JProperty("xxxxxxxxx", item.XXXXXX)
    , new JProperty("xxxxxxxxxxx", item.XXXXXXX)
    , new JProperty("xxxxxxxxxxxxx", item.XXXXXXXX)
    , new JProperty("xxxxxxxxxxxxxxxxx", item.XXXXXXXXX)
    , new JProperty("xxxxxxxxxxxxxxxxxxxx", item.XXXXXXXXXX)
    , new JProperty("xxxxxxxxxxxxxxxxxxxxxxx", item.XXXXXXXXXXX)));
    }
    obj.Add(new JProperty("WorkOrderManagerList", array));
    Response.Write(JsonConvert.SerializeObject(obj));

  下面是一个例子:

PS:json2.js这个文件在网上搜一下就能下载到。 

 

using System;
using System.Linq;
using System.Web.Script.Serialization;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        var xml = 
        @"<Columns>
          <Column Name=""key1"" DataType=""Boolean"">True</Column>
          <Column Name=""key2"" DataType=""String"">Hello World</Column>
          <Column Name=""key3"" DataType=""Integer"">999</Column>
        </Columns>";
        var dic = XDocument
            .Parse(xml)
            .Descendants("Column")
            .ToDictionary(
                c => c.Attribute("Name").Value, 
                c => c.Value
            );
        var json = new JavaScriptSerializer().Serialize(dic);
        Console.WriteLine(json);
    }
}

二、JSON转换成为JS

 第四种:利用array数组和hashtable拼成JSON格式,转成JSON在前端输出:

  其输出结果为:{"key1":"True","key2":"Hello World","key3":"999"}

1.处理:用jQuery的一个方法$.parseJSON()将JSON格式的数据转成JS对象。例如:var
json_data = $.getJSON(); var data = $.parseJSON(json_data);
(可用来成转换js数组)

    

  可能还会有更多的方法,这里不一一列出了。那么如何使用原生的C#代码将XML转换成JSON格式字符串呢?或者说该C#代码在较低版本的.NET
Framework中也可以运行呢?来看看下面的介绍吧。

2.将json转换成js对象的方法:var json = eval(‘(‘ + result + ‘)’); 

 ArrayList eventList = new ArrayList();

     Hashtable hx = new Hashtable();
     hx.Add("eventid", 1);
          hx.Add("eventname", "圣诞节");
       hx.Add("eventdate", "2018-08-25");
       hx.Add("eventlocation", "公司会议中心");

       for (int i = 0; i < 3; i++)
      {
      Hashtable ht = new Hashtable();
      ht.Add("eventid", i + 1);
      ht.Add("eventname", "圣诞节");
      ht.Add("eventdate", hx);
      ht.Add("eventlocation", "公司会议中心");
      eventList.Add(ht);
     }
    JavaScriptSerializer ser = new JavaScriptSerializer();
    String jsonStr = ser.Serialize(eventList);
    Response.Write(jsonStr);

Introduction

通过上面这个表达式,就完成了将服务器端响应给客户端的Json格式的字符串解析成了一个Json(格式的)对象,名称为“json”,通过“json.”或者“json[]”的方式便可进行数据访问。

 

  JSON是一个轻量级的数据交换格式,它可以非常容易地被页面的JavaScript编码为对象的形式,从而方便数据操作。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注