先聲明,以下兩個方法我一直用 肯定沒有問題 TXT讀取方法 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.rT1.Text = ""; FileStream fs1 = new FileStream("2.txt", FileMode.Open); StreamReader sr = new StreamReader(fs1); string str1 = sr.ReadToEnd(); this.rT1.Text = str1; sr.Close(); fs1.Close(); } } } ---------------------------------------------------------------------------------- 以下是 json的 序列化和反序列化 .net3.5提供了json對象序列化與反序列化的類。位置在:System.Runtime.Serialization.Json空間下。其中如果要應用這個空間還必須添加對 System.ServiceModel System.ServiceModel.Web 這兩個庫文件的引用。 參考實體類:Customer public class Customer { public int Unid { get; set; } public string CustomerName { get; set; } } DataContractJsonSerializer 將對象序列化爲 JavaScript 對象表示法 (JSON),並將 JSON 數據反序列化爲對象。無法繼承此類。 其中有個方法WriteObject,它的功能定義爲:將對象序列化爲 JavaScript 對象表示法 (JSON) 文檔 它有三個方法重載,其中一個爲: public override void WriteObject(Stream stream,Object graph) 它的功能描述這:將指定對象序列化爲 JavaScript 對象表示法 (JSON) 數據,並將生成的 JSON 寫入流中 (一)序列化 public string ToJson(Customer customer) { DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Customer)); MemoryStream ms=new MemoryStream(); ds.WriteObject(ms, customer); string strReturn=Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return strReturn; } 創建類實例,通過它的WriteObject方法來向流寫入序列化的對象,再把流寫入到字符串中。就可以得到JSON對象。 測試一下: Customer cc = new Customer {Unid=1,CustomerName="John" }; string strJson = ToJson(cc); Console.WriteLine(strJson); 結果爲:{"CustomerName":"John","Unid":1} (二)反序列化 ReadObject方法,其描述爲:反序列化 JSON(JavaScript 對象表示法)數據,並返回反序列化的對象。 它有很多重載,現在通過一種: public override Object ReadObject(Stream stream) 它從流中得到反序列化的對象。 public object FromJson(string strJson) { DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Customer)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)); return ds.ReadObject(ms); } 測試: string strJson="{\"CustomerName\":\"John\",\"Unid\":1}"; Customer c=FromJson(strJson) as Customer; Console.WriteLine(c.Unid+" "+c.CustomerName); (三)通過泛型方法對兩者進行修改 爲了適應多類型實例的序列化與反序列化,通過泛型方法來實現。 public string ToJson<T>(T t) { DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ds.WriteObject(ms, t); string strReturn = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return strReturn; } public T FromJson<T>(string strJson) where T:class { DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)); return ds.ReadObject(ms) as T; } •反序列化時通過泛型約束來指定類型T爲類類型。 測試: Customer cc = new Customer {Unid=1,CustomerName="John" }; string strJsons = ToJson<Customer>(cc); Console.WriteLine(strJsons); string strJson="{\"CustomerName\":\"John\",\"Unid\":1}"; Customer c = FromJson<Customer>(strJson); Console.WriteLine(c.Unid+" "+c.CustomerName);
c#讀取json,並序列化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.