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#程序设计有所帮助。

(0)

相关推荐

  • C#实现String类型和json之间的相互转换功能示例

    本文实例讲述了C#实现String类型和json之间的相互转换功能.分享给大家供大家参考,具体如下: ////Donet2.0 需要添加引用 // 从一个对象信息生成Json串 public static string ObjectToJson(object obj) { return JavaScriptConvert.SerializeObject(obj); } // 从一个Json串生成对象信息 public static object JsonToObject(string jsonS

  • C#中把Datatable转换为Json的5个代码实例

    实例一: 复制代码 代码如下: /// <summary>         /// Datatable转换为Json         /// </summary>        /// <param name="table">Datatable对象</param>         /// <returns>Json字符串</returns>         public static string ToJson(D

  • 自定义实现Json字符串向C#对象转变的方法

    这里使用Atrribute的方式实现了Json字符串向C#对象的转变.因为功能局限,此版本只是针对于Json字符串,如"response":"Hello","id":21231513,"result":100,"msg":"OK."; 而不是Json数组.这里的Atrribute是作用在属性上,像NHibernate中的Atrribute一样,是在运行时通过反射来获取这个属性对应于Jso

  • C#实现将json转换为DataTable的方法

    本文实例讲述了C#实现将json转换为DataTable的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: #region 将json转换为DataTable /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson">得到的json</param> /// <returns></returns> pr

  • C#实现集合转换成json格式数据的方法

    本文实例讲述了C#实现集合转换成json格式数据的方法.分享给大家供大家参考,具体如下: /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string ToJson(DataTable dt) { if (dt != null

  • C#中使用JSON.NET实现JSON、XML相互转换

    官方 JSON.NET 地址 http://james.newtonking.com/pages/json-net.aspx XML TO JSON string xml = @"<?xml version=""1.0"" standalone=""no""?> <root> <person id=""1""> <name>Ala

  • C#中的DataSet、string、DataTable、对象转换成Json的实现代码

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private s

  • C#实现Json转Unicode的方法

    本文实例讲述了C#实现Json转Unicode的方法.分享给大家供大家参考之用.具体方法如下: 本文实例主要实现输入为带有json格式的文本,输出正常文本的功能. 具体代码如下: private string JsonToUnicode(string input) { input = input.Replace("\\\"", "\""); input = input.Replace("\\/", "/")

  • C# XML与Json之间相互转换实例详解

    对于这转换其实很简单,其中最重要的就是先要引用类库.可以到官网进行下载引用http://json.codeplex.com. XML转换为Json字符串 复制代码 代码如下: string xml = @"<?xml version=""1.0"" standalone=""no""?>                             <root>                   

  • C#实现json格式转换成对象并更换key的方法

    本文实例讲述了C#实现json格式转换成对象并更换key的方法.分享给大家供大家参考.具体分析如下: 由于是不标准的序列化对象类型,因此你无法通过标准的反序列化类来实现,需要自定义一个序列化类或者简单点,直接自定义一个方法解析Json数据.解析后的数据用Dictionary来存放. string str = "{\"name\": \"甄嬛体\",\"2012-05-04 14:59\": \"5724\"}&quo

  • C#实现任意数据类型转成json格式输出

    直接贴代码: 复制代码 代码如下: /// List转成json   /// </summary>  /// <typeparam name="T"></typeparam>  /// <param name="jsonName"></param>  /// <param name="list"></param>  /// <returns></

随机推荐