加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C#将集合和Json格式互相转换的几种方式

(2013-03-21 20:06:49)
标签:

格式

几种

实体

方式

重庆

分类: C#

1.使用微软自带的System.Web.Extensions.dll转换,该DLL文件一般存在于如下路径:c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Extensions.dll

    具体操作如下:

    //List集合转换为Json字符串,必须应用上面的DLL文件,同时引用using System.Web.Script.Serialization;命名空间

    JavaScriptSerializer serializer = new JavaScriptSerializer();

    List<Person> list = new List<Person>();

    for (int i = 0; i < 10; i++)

    {

       Person p = new Person("张三" + i, "重庆" + i, "10" + i);

       list.Add(p);

    }

    MessageBox.Show(serializer.Serialize(list));

 

    //Json字符串转换为集合,Person为自己定义的实体类

    string json = "[{'Address':'重庆0','Age':'100','Name':'张三0'},{'Address':'重庆1','Age':'101','Name':'张三1'}]";

    JavaScriptSerializer serializer = new JavaScriptSerializer();

    List<Person> list = serializer.Deserialize<List<Person>>(json);

 

2.可以借助开源的Newtonsoft.Json.dll进行转换

 

3.引用微软如下两个DLL

    //注意引用:System.Runtime.SerializationSystem.ServiceModel.Web

    // 从一个对象信息生成Json

    public static string ObjectToJson(object obj)

    {

       DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

       MemoryStream stream = new MemoryStream();

       serializer.WriteObject(stream, obj);

       byte[] dataBytes = new byte[stream.Length];

       stream.Position = 0;

       stream.Read(dataBytes, 0, (int)stream.Length);

       return Encoding.UTF8.GetString(dataBytes);

    }

    // 从一个Json串生成对象信息

    public static object JsonToObject(string jsonString, object obj)

    {

       DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

       MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

       return serializer.ReadObject(mStream);

    }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有