来自 编程 2019-10-20 09:30 的文章
当前位置: 网上澳门金莎娱乐 > 编程 > 正文

自己总结的网上澳门金莎娱乐,输出到前端JSON的几种方法

    

  • 代码不会生成数字和布尔类型的值
  • Xml DocumentElement对象始终会被转换为JSON对象的member:object,它遵循下面这些规则。
  • 节点的属性会被对应地转换为JSON对象的成员"attr_name":"attr_value"。如:

    XML JSON
    <xx yy='nn'></xx> { "xx" : { "yy" : "nn" } }
    <xx yy=''></xx> { "xx" : { "yy" : "" } }
  • 没有子节点、属性和内容的节点被转换为成员"child_name":null

    XML JSON
    <xx/> { "xx" : null }
  • 没有子节点和属性,但是有内容的节点被转换为成员"child_name":"child_text"

    XML JSON
    <xx>yyy</xx> { "xx" : "yyy" }
  • 其它节点和属性会被适当地转换为"child_name":对象或者"child_name":[elements]对象数组,节点的值会被转换为对象成员的"value",如:

    XML JSON
    <xx yy='nn'><mm>zzz</mm></xx> { "xx" : { "yy" : "nn", "mm" : "zzz" } }
    <xx yy='nn'><mm>zzz</mm><mm>aaa</mm></xx> { "xx" : { "yy" : "nn", "mm" : [ "zzz", "aaa" ] } }
    <xx><mm>zzz</mm>some text</xx> { "xx" : { "mm" : "zzz", "value" : "some text" } }
    <xx value='yyy'>some text<mm>zzz</mm>more text</xx> { "xx" : { "mm" : "zzz", "value" : [ "yyy", "some text", "more text" ] } }
  • 字符会被安全地转换为JSON字符串。注意该转换不会保证你的JavaScript代码不会受到任何注入攻击,如果其中的内容来自于一段不安全的XML数据源的话。下面这个例子演示了字符的转义:

    XML JSON
    <aa>/z'z''zyyy</aa> { "aa" : "/zu0027z''z\yyy" }

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

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

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

  下面是一个例子:

 

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

    

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();

        }
    }
}

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

  基于AJAX的页面使用XmlHttpRequest对象从服务端接收数据来响应用户的请求,当返回的数据是XML格式时,它可以被转换为JSON格式的字符串从而通过JavaScript更加容易地对数据进行处理。

          

Using XmlToJSON

 

  • 使用Json.NET类库

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

  下面的代码演示了如何在ASP.NET 2的页面中使用XmlToJSON()方法。页面上使用了ClientScriptManager对象来作为JavaScript代码的容器。当然,你完全可以使用其它任何方式将所转换的JSON字符串放到前端页面上。通过下面的代码,程序在前端页面上调用一个名为space_processJSON的JavaScript函数,并将JSON字符串作为参数传递给它。

 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);
  • space_DOM.space.name
  • space_DOM.space.frame.length
  • space_DOM.space.frame[0].text.string
  • space_DOM.space.frame[0].rule[网上澳门金莎娱乐,0].type
  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);

XmlToJSON C# code

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));

 

  下面给出对应的C#源代码,通过传入的XmlDocument对象将其转换为对应的JSON格式字符串。

Code Description

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

   在某些特殊的环境下,例如下面的代码,可能需要你自己对反斜线进行转义。

  许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理。要实现这一点,它们必须将XML格式转换为JSON格式。下面的ASP.NET C#代码实现了这一过程。

  注意,在页面上使用任何未经检查的XML数据时都会存在安全隐患。

<script src="space/json.js" type="text/javascript"></script>

<script type="text/javascript">
function space_processJSON( JSON)
{
    space_DOM = JSON.parseJSON();
    if( !space_DOM)
    {
        alert("JSON decode error");
        return;
    }
    space_DOM.space.frame = ObjectToArray(space_DOM.space.frame);
    space_frameCount = space_DOM.space.frame.length;
    //.. or whatever
}
</script>

  原文出处:《How to convert XML to JSON in ASP.NET C#

本文由网上澳门金莎娱乐发布于编程,转载请注明出处:自己总结的网上澳门金莎娱乐,输出到前端JSON的几种方法

关键词: