C#实现JSON和对象之间互相转换功能示例

 更新时间:2017年09月01日 11:35:59   作者:GhostRider  
这篇文章主要介绍了C#实现JSON和对象之间互相转换功能,结合实例形式较为详细的分析了C#实现对象与json之间相互转换的操作技巧,需要的朋友可以参考下

本文实例讲述了C#实现JSON和对象之间互相转换功能。分享给大家供大家参考,具体如下:

1.首先是声明用户信息对象,DataContract修饰类,表示可以被解析成JSON,DataMember修饰属性,Order表示 解析的顺序,另外Lover是数组列表,表示女朋友个数

Address 表示送货地址,DailyRecord  表示日常记录

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
namespace FunctionTest.Model
{
  [DataContract]
  public class UserInfo
  {
    [DataMember(Order =0)]
    public string UserName { get; set; }
    [DataMember(Order = 1)]
    public int Age { get; set; }
    [DataMember(Order = 2)]
    public int Gender { get; set; }
    [DataMember(Order =3)]
    public List<string> Lover { get; set; }
    [DataMember(Order = 4)]
    public ContactAddress Address { get; set; }
    [DataMember(Order = 5)]
    public Dictionary<string, string> DailyRecord {
      get; set;
    }
  }
  [DataContract]
  public class ContactAddress
  {
    [DataMember(Order =0)]
    public string Province { get; set; }
    [DataMember(Order = 1)]
    public string City { get; set; }
    [DataMember(Order = 2)]
    public string Country { get; set; }
    [DataMember(Order = 3)]
    public string Details { get; set; }
  }
}

2.JSON帮助类 核心代码

/// <summary>
/// Json转换成对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonText"></param>
/// <returns></returns>
public static T JsonToObject<T>(string jsonText)
{
  DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
  MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
  T obj = (T)s.ReadObject(ms);
  ms.Dispose();
  return obj;
}
/// <summary>
/// 对象转换成JSON
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjectToJSON<T>(T obj)
{
  DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
  string result = string.Empty;
  using (MemoryStream ms = new MemoryStream())
  {
    serializer.WriteObject(ms, obj);
    ms.Position = 0;
    using (StreamReader read = new StreamReader(ms))
    {
      result = read.ReadToEnd();
    }
  }
  return result;
}

3.调用

//1.对象-->JSON
UserInfo info = new UserInfo
{
    Age = 10,
    Gender = 1,
    UserName = "刘德华",
    Lover = new List<string> { "美女1", "美女2", "美女3" },
    Address = new ContactAddress
    {
      Province = "湖南省",
      City = "长沙市",
      Country = "望城县",
      Details = "某旮旯快递找不到的地方"
    },
    DailyRecord = new Dictionary<string, string> { { "星期一", "吃饭" }, { "星期二", "洗衣服" }, { "星期三", "好事情" } }
};
string json = ObjectToJSON<UserInfo>(info);

4.反序列化后的结果

复制代码 代码如下:
{"UserName":"刘德华","Age":10,"Gender":1,"Lover":["美女1","美女2","美女3"],"Address":{"Province":"湖南省","City":"长沙市","Country":"望城县","Details":"某旮旯快递找不到的地方"},"DailyRecord":[{"Key":"星期一","Value":"吃饭"},{"Key":"星期二","Value":"洗衣服"},{"Key":"星期三","Value":"好事情"}]}

PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具:
http://tools.jb51.net/code/json

JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat

在线json压缩/转义工具:
http://tools.jb51.net/code/json_yasuo_trans

更多关于C#相关内容还可查看本站专题:《C#字符串操作技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#中XML文件操作技巧汇总》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程

希望本文所述对大家C#程序设计有所帮助。

相关文章

  • C#编写网游客户端的实现

    C#编写网游客户端的实现

    本文主要介绍了C#编写网游客户端,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 在C#中发送自定义HTML格式邮件的示例详解

    在C#中发送自定义HTML格式邮件的示例详解

    在C#中发送自定义HTML格式邮件是一项常见的任务,这在开发电子邮件营销系统或任何需要通过电子邮件与用户沟通的应用程序中都非常重要,以下是如何在C#中发送自定义HTML格式邮件的详解与示例,需要的朋友可以参考下
    2024-07-07
  • C#实现屏幕抓图并保存的示例代码

    C#实现屏幕抓图并保存的示例代码

    这篇文章主要为大家详细介绍了如何利用C#实现屏幕抓图并保存的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-12-12
  • C#使用foreach循环遍历数组完整实例

    C#使用foreach循环遍历数组完整实例

    这篇文章主要介绍了C#使用foreach循环遍历数组,结合完整实例形式较为详细的分析了C#遍历数组的相关技巧,需要的朋友可以参考下
    2016-06-06
  • Enterprise Library for .NET Framework 2.0缓存使用实例

    Enterprise Library for .NET Framework 2.0缓存使用实例

    这篇文章主要介绍了Enterprise Library for .NET Framework 2.0缓存使用实例,是进行项目开发时非常有用的功能,需要的朋友可以参考下
    2014-08-08
  • c#获取gridview的值代码分享

    c#获取gridview的值代码分享

    这篇文章主要介绍了C#如何在事件中获得GridView里面TextBox的值,大家参考使用吧
    2013-12-12
  • c#中文转unicode字符示例分享

    c#中文转unicode字符示例分享

    本文介绍了中文转unicode字符的方法,还有UNICODE字符转为中文的方法,大家参考使用吧
    2014-01-01
  • C#使用远程服务调用框架Apache Thrift

    C#使用远程服务调用框架Apache Thrift

    这篇文章介绍了C#使用远程服务调用框架Apache Thrift的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#数字图象处理之图像灰度化方法

    C#数字图象处理之图像灰度化方法

    这篇文章主要介绍了C#数字图象处理之图像灰度化方法,涉及C#基于Bitmap类操作图像的相关技巧,需要的朋友可以参考下
    2015-04-04
  • C# 重写Notification提示窗口的示例代码

    C# 重写Notification提示窗口的示例代码

    本文主要介绍了C# 重写Notification提示窗口的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论