zoukankan      html  css  js  c++  java
  • C#对象转json字符串和json字符串转对象

    /* 创建者:菜刀居士的博客
     * 创建日期: 2014年09月03号
     * 功能: Json操作
     *
     */

    namespace Net.String.ConsoleApplication
    {
        using System;
        using System.Data;
        using System.Collections;
        using System.ComponentModel;
        using System.Collections.Generic;
        using System.Web.Script.Serialization;
      

        public class JsonHelper
        {
            /// <summary>
            /// 把json字符串转成对象
            /// </summary>
            /// <typeparam name="T">对象</typeparam>
            /// <param name="data">json字符串</param>
            public static T Deserialize<T>(string data)
            {
                System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
                return json.Deserialize<T>(data);
            }

            /// <summary>
            /// 把对象转成json字符串
            /// </summary>
            /// <param name="o">对象</param>
            /// <returns>json字符串</returns>
            public static string Serialize(object o)
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
                json.Serialize(o, sb);
                return sb.ToString();
            }

            /// <summary>
            /// 把DataTable对象转成json字符串
            /// </summary>
            public string ToJson(DataTable dt)
            {
                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                ArrayList arrayList = new ArrayList();
                foreach (DataRow dataRow in dt.Rows)
                {
                    Dictionary<string, object> dictionary = new Dictionary<string, object>();
                    foreach (DataColumn dataColumn in dt.Columns)
                    {
                        dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName]);
                    }
                    arrayList.Add(dictionary);
                }
                return javaScriptSerializer.Serialize(arrayList);
            }
        }

        public static class EnumerableExtension
        {
            /// <summary>
            /// 集合加入一个对象
            /// </summary>
            public static IEnumerable<T> Add<T>(this IEnumerable<T> e, T value)
            {
                foreach (var cur in e)
                { yield return cur; }
                yield return value;
            }

            /// <summary>
            /// 把集合转成DataTable
            /// </summary>
            public static DataTable ConvertToDataTable<T>(this IEnumerable<T> enumerable)
            {
                var dataTable = new DataTable();
                foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))
                {
                    dataTable.Columns.Add(pd.Name, pd.PropertyType);
                }
                foreach (T item in enumerable)
                {
                    var Row = dataTable.NewRow();

                    foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                    {
                        Row[dp.Name] = dp.GetValue(item);
                    }
                    dataTable.Rows.Add(Row);
                }
                return dataTable;
            }
        }
    }

  • 相关阅读:
    让owncloud成为微博式记事本
    软件即抽象
    十年,最后一个alpha,0.4.1版的reactos终于变得可赏可玩了
    使用群晖作mineportalbox(1):合理且不折腾地使用群晖硬件和套件
    使用群晖作mineportalbox(2):把webstation打造成snippter空间
    使用群晖作mineportalbox(3):在阿里云上单盘安装群晖skynas
    统一的分布式数据库和文件系统mongodb,及其用于解决aliyun上做站的存储成本方案
    吃桃
    1020: C语言程序设计教程(第三版)课后习题6.9
    分数序列
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5205092.html
Copyright © 2011-2022 走看看