asp.net DataTable和Dataset序列化成Json格式

DataTableToJson:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.IO;
using System.Web.Script.Serialization;
using MicroBlog.Common.APIHelper;
using System.Web;

namespace MicroBlog.Common.APIHelper
{
    public class Resolve
    {
        /// <summary>
        /// JSON文本转对象,泛型方法
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>指定类型的对象</returns>
        public static T JSONToObject<T>(string jsonText, HttpContext context)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                return jss.Deserialize<T>(jsonText);
            }
            catch (Exception ex)
            {
                return default(T);
            }
        }

        /// <summary>
        /// 将JSON文本转换成数据行
        /// </summary>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>数据行的字典</returns>
        public static Dictionary<string, object> DataRowFromJSON(string jsonText, HttpContext context)
        {
            return JSONToObject<Dictionary<string, object>>(jsonText, context);
        }
    }
}
调用的话:Dictionary<string, object> dt = Resolve.DataRowFromJSON(requestbuffer, context);


DatasetToJson:

public class DataSetConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return typeof(DataSet).IsAssignableFrom(objectType);
    }

    public override void WriteJson(JsonWriter writer, object value)
    {
        DataSet ds = (DataSet)value;
        writer.WriteStartObject();
        foreach (DataTable dt in ds.Tables)
        {
            writer.WritePropertyName(dt.TableName);
            writer.WriteStartArray();
            foreach (DataRow dr in dt.Rows)
            {
                writer.WriteStartObject();
                foreach (DataColumn dc in dt.Columns)
                {
                    writer.WritePropertyName(dc.ColumnName);
                    writer.WriteValue(dr[dc].ToString());
                }
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
        writer.WriteEndObject();
    }
}

调用的话:JavaScriptConvert.SerializeObject(GetTestDataSet(), new DataSetConverter());


DataTableToJson2:

public class DataTableConverter : JsonConverter
    {
        public override void WriteJson(JsonWriter writer, object value)
        {
            DataTable dt = (DataTable)value;

            writer.WriteStartArray();
            foreach (DataRow dr in dt.Rows)
            {
                writer.WriteStartObject();
                foreach (DataColumn dc in dt.Columns)
                {
                    writer.WritePropertyName(dc.ColumnName);
                    writer.WriteValue(dr[dc].ToString());
                }
                writer.WriteEndObject();
            }
            writer.WriteEndArray();


        }

        public override bool CanConvert(Type objectType)
        {
            return typeof(DataTable).IsAssignableFrom(objectType);
        }
    }
调用的话: JavaScriptConvert.SerializeObject(GetTestDataTable(), new DataTableConverter());


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值