`
邪神Saber
  • 浏览: 41702 次
文章分类
社区版块
存档分类
最新评论

C# Json序列化和反序列化辅助类(官方DLL)

 
阅读更多

方法一:

①添加DLL

Newtonsoft.Json.dll

②添加命名空间

using Newtonsoft.Json;
③应用

序列化

JsonConvert.SerializeObject(user);

方法二:

①添加DLL

System.Web.Extensions.dll

②添加引用

using System.Web.Script.Serialization;
③应用
List<User> list = new List<User>();
list.Add(new User("张", "123"));
list.Add(new User("王", "456"));
list.Add(new User("李", "789"));
JavaScriptSerializer serializer = new JavaScriptSerializer();
string str = serializer.Serialize(list);
Console.Write(str);
Console.Read();

方法三:

添加DLL引用:

System.Runtime.Serialization.dll

using System.Runtime.Serialization.Json;

System.Web.Extensions.dll

using System.Web.Script.Serialization;

工具类代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Runtime.Serialization.Json;//在System.Runtime.Serialization.dll中
using System.Web.Script.Serialization; //在System.Web.Extensions.dll中
namespace Util
{
  /// <summary>
  /// Json序列化和反序列化辅助类
  /// </summary>
  public class JsonHelper
  {
    /// <summary>
    /// Json序列化
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="obj">对象实例</param>
    /// <returns>json字符串</returns>
    public static string JsonSerializer<T>(T obj)
    {
      string jsonString = string.Empty;
      try
      {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));


        using (MemoryStream ms = new MemoryStream())
        {
          serializer.WriteObject(ms, obj);
          jsonString = Encoding.UTF8.GetString(ms.ToArray());
        }
      }
      catch
      {
        jsonString = string.Empty;
      }
      return jsonString;
    }


    /// <summary>
    /// Json反序列化
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="jsonString">json字符串</param>
    /// <returns>对象实例</returns>
    public static T JsonDeserialize<T>(string jsonString)
    {
      T obj = Activator.CreateInstance<T>();
      try
      {
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
        {
          DataContractJsonSerializer ser = new DataContractJsonSerializer(obj.GetType());//typeof(T)
          T jsonObject = (T)ser.ReadObject(ms);
          ms.Close();


          return jsonObject;
        }
      }
      catch
      {
        return default(T);
      }
    }


    /// <summary>
    /// 将 DataTable 序列化成 json 字符串
    /// </summary>
    /// <param name="dt">DataTable对象</param>
    /// <returns>json 字符串</returns>
    public static string DataTableToJson(DataTable dt)
    {
      if (dt == null || dt.Rows.Count == 0)
      {
        return "\"\"";
      }
      JavaScriptSerializer myJson = new JavaScriptSerializer();


      List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();


      foreach (DataRow dr in dt.Rows)
      {
        Dictionary<string, object> result = new Dictionary<string, object>();
        foreach (DataColumn dc in dt.Columns)
        {
          result.Add(dc.ColumnName, dr[dc].ToString());
        }
        list.Add(result);
      }
      return myJson.Serialize(list);
    }


    /// <summary>
    /// 将对象序列化成 json 字符串
    /// </summary>
    /// <param name="obj">对象实例</param>
    /// <returns>json 字符串</returns>
    public static string ObjectToJson(object obj)
    {
      if (obj == null)
      {
        return string.Empty;
      }
      JavaScriptSerializer myJson = new JavaScriptSerializer();


      return myJson.Serialize(obj);
    }


    /// <summary>
    /// 将 json 字符串反序列化成对象
    /// </summary>
    /// <param name="json">json字符串</param>
    /// <returns>对象实例</returns>
    public static object JsonToObject(string json)
    {
      if (string.IsNullOrEmpty(json))
      {
        return null;
      }
      JavaScriptSerializer myJson = new JavaScriptSerializer();


      return myJson.DeserializeObject(json);
    }


    /// <summary>
    /// 将 json 字符串反序列化成对象
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="json">json字符串</param>
    /// <returns>对象实例</returns>
    public static T JsonToObject<T>(string json)
    {
      if (string.IsNullOrEmpty(json))
      {
        return default(T);
      }
      JavaScriptSerializer myJson = new JavaScriptSerializer();


      return myJson.Deserialize<T>(json);
    }
  }
}

分享到:
评论

相关推荐

    c#两种简单的json类和对象的序列化和解析

    c#两种简单的json类和对象的序列化和解析。一种使用Hashtable序列化和解析;一种使用实体类序列化和解析。需要借助第三方Newtonsoft.Json.dll。

    .net 序列化和反序列化 Json

    .net 序列化和反序列化Json,目前在.net 3.5之前序列化json用的Newtonsoft.dll,不过3.5之后包括3.5,可以使用.net自带方法,详见压缩包内文件。

    Json反序列化文件

    Newtonsoft.Json.dll net3.5 net4.0版本

    C#写的Json与Xml互转支持.net framework2.0以上组件Newtonsoft.Json.dll

    C# Json转Xml 或 Xml转Json 使用详细说明及资源 支持框架2.0以上 控件Newtonsoft.Json.dll内容详细包含源代码示例

    C# 转换实体类为Json字符串

    实体类转换成 JSON 字符串,将datatable转换为json,DataTable转换实体类

    Newtonsoft.Json.dll 和ServiceStack.Text.dll

    Newtonsoft.Json.dll 和ServiceStack.Text.dll JSON序列化和反序列化

    Json离线格式化工具

    在开发中,如果用到Json传递或者存储数据,Newtonsoft.Json序列化后的内容很难阅读,Json格式化(树状结构)工具由此诞生。压缩包中包含一个美化工具(exe)、C# net 3.5的格式化dll和一个简单的demo文件(exe工具...

    Newtonsoft.Json.dll

    .NET中开源的Json序列化和反序列化类库

    超级多的C#辅助类大全

    超级多的C#辅助类大全 网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问有没有这个helper,那个helper,于是萌生了收集全部helper的念头,以便日后使用。各式各样的几乎都能找到,...

    Newtonsoft.Json.dll文件

    Newtonsoft.Json.dll文件,json序列化反序列化第三方库,序列化、反序列化使用方法:https://blog.csdn.net/qq_44020228/article/details/114180963

    c#操作json示例分享

    1..NET对JSON的支持介绍 (1)操作Json的DLL介绍 .NET自身有System.Runtime.Serialization.dll与System.Web.Extensions.dll,使用这两个DLL可以把对象序列化和反序列化成Json数据。...2.JSON序列化和反序列化

    浅析JavaScriptSerializer类的序列化与反序列化

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象。要添加System.Web.Extensions.dll的...

    C# JSON格式化转换辅助类 ConvertJson

    可能我们用惯了 Newtonsoft.Json.dll 等第三方的类库来实现序列化等类似的操作,但是有时只是简单的用一下,感觉没必要那么费事,所谓杀鸡焉用牛刀,自制个小刀即可。 代码分享给大家,如下: using System; using ...

    序列化Hashtable

    } 上面是从结果上看,猜想最终序列化的时候,集合类是要以上面那样的循环方式进行序列化的,而实现了IDictionary接口的类对于那样的方式是不灵的,所以在生成临时文件的时候就不让它生成了,反正生成的DLL也是无法...

    Newtonsoft.Json.dll类适合.net 2.0/3.5/4.0

    压缩包内包含2.0/3.5/4.0三个文件夹,每个文件下都有一个Newtonsoft.Json.dll类都是已经编译好的dll文件,复制到.net项目中即可使用。其余包含Silverlight和手机端的文件夹比较全的json序列化压缩包。

    C#序列化和反序列化综合案例

    System.Web和System.Web.Extensions如图好的,下面是我用程序创建的一个JSON格式的名为”json.txt”的文本。 下面是我的WinForm的UI和识别代码逻辑效果如何你解析的JSON不是多个对象,而是一个,如:  那么执行效果...

    CodeBetter.Json

    CodeBetter.Json是网上很久前发布的一个Wince和mobile下json的序列化和反序列化代码,不过有问题,并且和众多常用的如fastJSON / ServiceStack.Text这些比较有名的序列化出来的东西都不一样.因此,这个资源是自己改编...

Global site tag (gtag.js) - Google Analytics