.net实体类与json相互转换

 更新时间:2016年07月11日 10:45:06   作者:人曾在师大  
这篇文章主要为大家详细介绍了.net实体类与json相互转换的相关资料,感兴趣的小伙伴们可以参考一下

.net实体类与json相互转换时,注意要点:
1.jsonhelp编写时候添加的引用。System.Runtime.Serialization.Json; 
2.实体类需声明为public 

jsonhelp代码: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization.Json;
using System.IO;
namespace JsonTest
{
  class JsonHelp
  {
    public JsonHelp()
  {

    //

    // TODO: Add constructor logic here

    //

  }
  /// <summary>
  /// 把对象序列化 JSON 字符串 
  /// </summary>
  /// <typeparam name="T">对象类型</typeparam>
  /// <param name="obj">对象实体</param>
  /// <returns>JSON字符串</returns>
  public static string GetJson<T>(T obj)
  {
    //记住 添加引用 System.ServiceModel.Web 
    /**
     * 如果不添加上面的引用,System.Runtime.Serialization.Json; Json是出不来的哦
     * */
    DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
    using (MemoryStream ms = new MemoryStream())
    {
      json.WriteObject(ms, obj);
      string szJson = Encoding.UTF8.GetString(ms.ToArray());
      return szJson;

    }

  }

  /// <summary>
  /// 把JSON字符串还原为对象
  /// </summary>
  /// <typeparam name="T">对象类型</typeparam>
  /// <param name="szJson">JSON字符串</param>
  /// <returns>对象实体</returns>
  public static T ParseFormJson<T>(string szJson)
  {
    T obj = Activator.CreateInstance<T>();
    using (MemoryStream ms = new MemoryStream (Encoding.UTF8.GetBytes(szJson)))
    {
      DataContractJsonSerializer dcj = new DataContractJsonSerializer(typeof(T));
      return (T)dcj.ReadObject(ms);
    }
  }
 

  }

} 

实体类代码: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JsonTest
{
 public class testData
  {
    public testData()

  {

  }
  public int Id { get; set; }
  public string Name { get; set; }
  public string Sex { get; set; }
  }
} 

控制台应用程序测试代码: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JsonTest

{
  class Program

  {
    static void Main(string[] args)
    {

      //实体类转json
      testData t1 = new testData();
      t1.Id = 1;
      t1.Name = "001姓名";
      t1.Sex = "男";
      testData t2 = new testData();
      t2.Id = 2;
      t2.Name = "002姓名";
      t2.Sex = "男";
      testData t3 = new testData();
      t3.Id = 3;
      t3.Name = "003姓名";
      t3.Sex = "男";
      List<testData> tlist = new List<testData>();
      tlist.Add(t1);
      tlist.Add(t2);
      tlist.Add(t3);
     Console.WriteLine(JsonHelp.GetJson<List<testData>>(tlist));

      // Console.ReadKey();
      //json转实体类

     List<testData> tl = JsonHelp.ParseFormJson <List<testData>>(JsonHelp.GetJson<List<testData>>(tlist));
     Console.WriteLine(tl.Count);
     Console.WriteLine(tl[0].Name);
     Console.ReadKey();
    }

  }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 利用.net core实现反向代理中间件的方法

    利用.net core实现反向代理中间件的方法

    这篇文章主要给大家介绍了关于利用.net core实现反向代理中间件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • .net制作的抽餐厅和游戏装备的小程序

    .net制作的抽餐厅和游戏装备的小程序

    这篇文章主要介绍了.net制作的抽餐厅和游戏装备的小程序,小伙伴们以后再也不用每天都考虑去哪里吃饭了,非常好玩和实用,需要的朋友可以参考下
    2015-03-03
  • ASP.NET页面按钮单击事件失效的解决方法

    ASP.NET页面按钮单击事件失效的解决方法

    按钮的单击事件不起作用了,加了断点之后发现根本没有触发该事件,下面有个不错的解决方法,大家可以参考下
    2014-02-02
  • ASP.NET MVC实现路由功能

    ASP.NET MVC实现路由功能

    这篇文章介绍了ASP.NET MVC实现路由功能的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • .NET对接极光消息推送的实现方法

    .NET对接极光消息推送的实现方法

    很多手机APP会不定时的给用户推送消息,本文主要介绍了.NET对接极光消息推送,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • vs 不显示行号的操作方法

    vs 不显示行号的操作方法

    vs 不显示行号的操作方法...
    2007-12-12
  • ASP.NET MVC实现批量文件上传

    ASP.NET MVC实现批量文件上传

    这篇文章主要为大家详细介绍了ASP.NET MVC实现批量文件上传,简单介绍单文件上传的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • VS2015中C#版本6.0的新特性 你需要知道

    VS2015中C#版本6.0的新特性 你需要知道

    VS2015内置的C#版本为6.0,提供了一些新特性,这篇文章主要为大家详细介绍了VS2015中C#版本6.0的8种新特性,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • ASP.NET Core 奇淫技巧之伪属性注入的实现

    ASP.NET Core 奇淫技巧之伪属性注入的实现

    这篇文章主要介绍了ASP.NET Core 奇淫技巧之伪属性注入的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Could not load file or assembly "App_Licenses.dll"的问题

    Could not load file or assembly "App_Licenses.dll"

    Could not load file or assembly "App_Licenses.dll"的问题
    2010-03-03

最新评论