C#將集合和Json格式互相轉換的幾種方式


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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM