• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
混子程序员
博客园    首页    新随笔    联系   管理    订阅  订阅
C# json和集合相互转换 引用防丢

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

 引用自:https://www.cnblogs.com/duanjt/p/5180164.html

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进行转换

复制代码
//将List集合转换为Json字符串
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(JsonConvert.SerializeObject(list));

//从JSON字符串生成集合对象
String json="[{\"Name\":\"张三0\",\"Address\":\"重庆0\",\"Age\":\"100\"},{\"Name\":\"张三1\",\"Address\":\"重庆1\",\"Age\":\"101\"}] ";
var list=JsonConvert.DeserializeObject<Person>(json);
复制代码

3.引用微软如下两个DLL

复制代码
//注意引用:System.Runtime.Serialization,System.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);
}
复制代码

备注:
用到的类

复制代码
public class Person
{
    public String Name { get; set; }
    public String Address { get; set; }
    public int Age { get; set; }
    
    public Person() { }

    public Person(String name, String address, String age)
    {
        this.Name = name;
        this.Address = address;
        this.Age = age;
    }
}
posted on 2020-05-11 11:28  混子程序员ZMY  阅读(274)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3