微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

这篇文章主要介绍了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:好事情}]}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐